{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#   1.  数据探索\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 导入必要的工具包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "# plotting\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sn\n",
    "\n",
    "#图形出现在notebook里而不是新窗口\n",
    "%matplotlib inline\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读入数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>dteday</th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>casual</th>\n",
       "      <th>registered</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>2011-01-01</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.344167</td>\n",
       "      <td>0.363625</td>\n",
       "      <td>0.805833</td>\n",
       "      <td>0.160446</td>\n",
       "      <td>331</td>\n",
       "      <td>654</td>\n",
       "      <td>985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>2011-01-02</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.363478</td>\n",
       "      <td>0.353739</td>\n",
       "      <td>0.696087</td>\n",
       "      <td>0.248539</td>\n",
       "      <td>131</td>\n",
       "      <td>670</td>\n",
       "      <td>801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>2011-01-03</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.196364</td>\n",
       "      <td>0.189405</td>\n",
       "      <td>0.437273</td>\n",
       "      <td>0.248309</td>\n",
       "      <td>120</td>\n",
       "      <td>1229</td>\n",
       "      <td>1349</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>2011-01-04</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>0.212122</td>\n",
       "      <td>0.590435</td>\n",
       "      <td>0.160296</td>\n",
       "      <td>108</td>\n",
       "      <td>1454</td>\n",
       "      <td>1562</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>2011-01-05</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.226957</td>\n",
       "      <td>0.229270</td>\n",
       "      <td>0.436957</td>\n",
       "      <td>0.186900</td>\n",
       "      <td>82</td>\n",
       "      <td>1518</td>\n",
       "      <td>1600</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   instant      dteday  season  yr  mnth  holiday  weekday  workingday  \\\n",
       "0        1  2011-01-01       1   0     1        0        6           0   \n",
       "1        2  2011-01-02       1   0     1        0        0           0   \n",
       "2        3  2011-01-03       1   0     1        0        1           1   \n",
       "3        4  2011-01-04       1   0     1        0        2           1   \n",
       "4        5  2011-01-05       1   0     1        0        3           1   \n",
       "\n",
       "   weathersit      temp     atemp       hum  windspeed  casual  registered  \\\n",
       "0           2  0.344167  0.363625  0.805833   0.160446     331         654   \n",
       "1           2  0.363478  0.353739  0.696087   0.248539     131         670   \n",
       "2           1  0.196364  0.189405  0.437273   0.248309     120        1229   \n",
       "3           1  0.200000  0.212122  0.590435   0.160296     108        1454   \n",
       "4           1  0.226957  0.229270  0.436957   0.186900      82        1518   \n",
       "\n",
       "    cnt  \n",
       "0   985  \n",
       "1   801  \n",
       "2  1349  \n",
       "3  1562  \n",
       "4  1600  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 读入数据\n",
    "train = pd.read_csv(\"./day.csv\")\n",
    "train.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 731 entries, 0 to 730\n",
      "Data columns (total 16 columns):\n",
      "instant       731 non-null int64\n",
      "dteday        731 non-null object\n",
      "season        731 non-null int64\n",
      "yr            731 non-null int64\n",
      "mnth          731 non-null int64\n",
      "holiday       731 non-null int64\n",
      "weekday       731 non-null int64\n",
      "workingday    731 non-null int64\n",
      "weathersit    731 non-null int64\n",
      "temp          731 non-null float64\n",
      "atemp         731 non-null float64\n",
      "hum           731 non-null float64\n",
      "windspeed     731 non-null float64\n",
      "casual        731 non-null int64\n",
      "registered    731 non-null int64\n",
      "cnt           731 non-null int64\n",
      "dtypes: float64(4), int64(11), object(1)\n",
      "memory usage: 91.5+ KB\n"
     ]
    }
   ],
   "source": [
    "#输出数据的整体信息\n",
    "train.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据探索"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>casual</th>\n",
       "      <th>registered</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>366.000000</td>\n",
       "      <td>2.496580</td>\n",
       "      <td>0.500684</td>\n",
       "      <td>6.519836</td>\n",
       "      <td>0.028728</td>\n",
       "      <td>2.997264</td>\n",
       "      <td>0.683995</td>\n",
       "      <td>1.395349</td>\n",
       "      <td>0.495385</td>\n",
       "      <td>0.474354</td>\n",
       "      <td>0.627894</td>\n",
       "      <td>0.190486</td>\n",
       "      <td>848.176471</td>\n",
       "      <td>3656.172367</td>\n",
       "      <td>4504.348837</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>211.165812</td>\n",
       "      <td>1.110807</td>\n",
       "      <td>0.500342</td>\n",
       "      <td>3.451913</td>\n",
       "      <td>0.167155</td>\n",
       "      <td>2.004787</td>\n",
       "      <td>0.465233</td>\n",
       "      <td>0.544894</td>\n",
       "      <td>0.183051</td>\n",
       "      <td>0.162961</td>\n",
       "      <td>0.142429</td>\n",
       "      <td>0.077498</td>\n",
       "      <td>686.622488</td>\n",
       "      <td>1560.256377</td>\n",
       "      <td>1937.211452</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.059130</td>\n",
       "      <td>0.079070</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.022392</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>22.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>183.500000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.337083</td>\n",
       "      <td>0.337842</td>\n",
       "      <td>0.520000</td>\n",
       "      <td>0.134950</td>\n",
       "      <td>315.500000</td>\n",
       "      <td>2497.000000</td>\n",
       "      <td>3152.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>366.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.498333</td>\n",
       "      <td>0.486733</td>\n",
       "      <td>0.626667</td>\n",
       "      <td>0.180975</td>\n",
       "      <td>713.000000</td>\n",
       "      <td>3662.000000</td>\n",
       "      <td>4548.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>548.500000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.655417</td>\n",
       "      <td>0.608602</td>\n",
       "      <td>0.730209</td>\n",
       "      <td>0.233214</td>\n",
       "      <td>1096.000000</td>\n",
       "      <td>4776.500000</td>\n",
       "      <td>5956.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>731.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>12.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.861667</td>\n",
       "      <td>0.840896</td>\n",
       "      <td>0.972500</td>\n",
       "      <td>0.507463</td>\n",
       "      <td>3410.000000</td>\n",
       "      <td>6946.000000</td>\n",
       "      <td>8714.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          instant      season          yr        mnth     holiday     weekday  \\\n",
       "count  731.000000  731.000000  731.000000  731.000000  731.000000  731.000000   \n",
       "mean   366.000000    2.496580    0.500684    6.519836    0.028728    2.997264   \n",
       "std    211.165812    1.110807    0.500342    3.451913    0.167155    2.004787   \n",
       "min      1.000000    1.000000    0.000000    1.000000    0.000000    0.000000   \n",
       "25%    183.500000    2.000000    0.000000    4.000000    0.000000    1.000000   \n",
       "50%    366.000000    3.000000    1.000000    7.000000    0.000000    3.000000   \n",
       "75%    548.500000    3.000000    1.000000   10.000000    0.000000    5.000000   \n",
       "max    731.000000    4.000000    1.000000   12.000000    1.000000    6.000000   \n",
       "\n",
       "       workingday  weathersit        temp       atemp         hum   windspeed  \\\n",
       "count  731.000000  731.000000  731.000000  731.000000  731.000000  731.000000   \n",
       "mean     0.683995    1.395349    0.495385    0.474354    0.627894    0.190486   \n",
       "std      0.465233    0.544894    0.183051    0.162961    0.142429    0.077498   \n",
       "min      0.000000    1.000000    0.059130    0.079070    0.000000    0.022392   \n",
       "25%      0.000000    1.000000    0.337083    0.337842    0.520000    0.134950   \n",
       "50%      1.000000    1.000000    0.498333    0.486733    0.626667    0.180975   \n",
       "75%      1.000000    2.000000    0.655417    0.608602    0.730209    0.233214   \n",
       "max      1.000000    3.000000    0.861667    0.840896    0.972500    0.507463   \n",
       "\n",
       "            casual   registered          cnt  \n",
       "count   731.000000   731.000000   731.000000  \n",
       "mean    848.176471  3656.172367  4504.348837  \n",
       "std     686.622488  1560.256377  1937.211452  \n",
       "min       2.000000    20.000000    22.000000  \n",
       "25%     315.500000  2497.000000  3152.000000  \n",
       "50%     713.000000  3662.000000  4548.000000  \n",
       "75%    1096.000000  4776.500000  5956.000000  \n",
       "max    3410.000000  6946.000000  8714.000000  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#对特征用常用统计量观察其分布\n",
    "train.describe()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.1单变量分布分析(每个特征自己的分布)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 离散型特征的分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "season属性的不同取值和出现的次数\n",
      "3    188\n",
      "2    184\n",
      "1    181\n",
      "4    178\n",
      "Name: season, dtype: int64\n",
      "\n",
      "mnth属性的不同取值和出现的次数\n",
      "12    62\n",
      "10    62\n",
      "8     62\n",
      "7     62\n",
      "5     62\n",
      "3     62\n",
      "1     62\n",
      "11    60\n",
      "9     60\n",
      "6     60\n",
      "4     60\n",
      "2     57\n",
      "Name: mnth, dtype: int64\n",
      "\n",
      "weathersit属性的不同取值和出现的次数\n",
      "1    463\n",
      "2    247\n",
      "3     21\n",
      "Name: weathersit, dtype: int64\n",
      "\n",
      "weekday属性的不同取值和出现的次数\n",
      "6    105\n",
      "1    105\n",
      "0    105\n",
      "5    104\n",
      "4    104\n",
      "3    104\n",
      "2    104\n",
      "Name: weekday, dtype: int64\n",
      "\n",
      "holiday属性的不同取值和出现的次数\n",
      "0    710\n",
      "1     21\n",
      "Name: holiday, dtype: int64\n",
      "\n",
      "workingday属性的不同取值和出现的次数\n",
      "1    500\n",
      "0    231\n",
      "Name: workingday, dtype: int64\n",
      "\n",
      "yr属性的不同取值和出现的次数\n",
      "1    366\n",
      "0    365\n",
      "Name: yr, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "#对类别型特征，观察其取值范围及直方图\n",
    "categorical_features = ['season','mnth','weathersit','weekday','holiday','workingday','yr']\n",
    "for col in categorical_features:\n",
    "#在Python3.x之中print语句没有了，取而代之的是print()函数。\n",
    "    print ('\\n%s属性的不同取值和出现的次数'%col)\n",
    "    print (train[col].value_counts())\n",
    "    train[col] = train[col].astype('object')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对单个变量，可用直方图，箱体图，观测其分布，看是不是有噪声数据点等。seaborn的displot方法可以对数值型特征绘制直方图（distribution plot）,纵轴为归一化后的值（概率密度）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#对数值型特征，直方图\n",
    "fig = plt.figure()\n",
    "sn.distplot(train[\"cnt\"], bins=30, kde=True)\n",
    "plt.xlabel(\"cnt\", fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEGCAYAAAB1iW6ZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deXRd5X3v//f3aLSs2RptWZZtyTa28YBtDBgwc4Aw5RYaQhJCmoYV2jThl/S2Se5Nm9ve32qb3CaBkIZwCUnISghpIGEOYTY2NrbxJBtP8qzB1ixrns5z/5CcGiNZR/I52jr7fF5raXGksznnsy35461nP/vZ5pxDRESiX8DrACIiEh4qdBERn1Chi4j4hApdRMQnVOgiIj4R79Ub5+TkuJKSEq/eXkQkKr333nv1zrncoZ7zrNBLSkrYvHmzV28vIhKVzOzIcM9pyEVExCdU6CIiPjFioZvZdDN7w8x2m9kuM/vyENtcYWYtZrZt8OMfIhNXRESGE8oYeh/wVefcFjNLA94zs1ecc++fsd3bzrmbwh9RRERCMeIRunOuxjm3ZfBxK7AbmBbpYCIiMjqjGkM3sxJgKfDuEE9fbGbbzewlM1swzP9/r5ltNrPNdXV1ow4rIiLDC7nQzSwVeAq43zl38oyntwAznHOLgR8Avx/qNZxzjzjnljvnlufmDjmNUkRExiikQjezBAbK/JfOuafPfN45d9I51zb4+EUgwcxywppURETOKpRZLgb8BNjtnPvuMNsUDG6HmV04+LoN4QwqIiJnF8osl1XAp4FyM9s2+LVvAMUAzrmHgduB+8ysD+gE7nS6c4ZI1PvVu0eH/PpdK4vHOYmEYsRCd86tBWyEbR4CHgpXKBERGT1dKSoi4hMqdBERn1Chi4j4hApdRMQnVOgiIj6hQhcR8QkVuoiIT6jQRUR8QoUuIuITKnQREZ9QoYuI+IQKXUTEJ1ToIiI+oUIXEfEJFbqIiE+EcoMLkZDoZggi3tIRuoiIT6jQRUR8QoUuIuITKnQREZ9QoYuI+IQKXUTEJ1ToIiI+oUIXEfEJFbqIiE+o0EVEfEKFLiLiEyp0ERGfUKGLiPiECl1ExCdU6CIiPqFCFxHxCRW6iIhPjFjoZjbdzN4ws91mtsvMvjzENmZmD5pZhZntMLMLIhNXRESGE8ot6PqArzrntphZGvCemb3inHv/tG1uAMoGP1YCPxr8r4iIjJMRj9CdczXOuS2Dj1uB3cC0Mza7FXjcDdgAZJpZYdjTiojIsEY1hm5mJcBS4N0znpoGHDvt80o+XPqY2b1mttnMNtfV1Y0uqYiInFXIhW5mqcBTwP3OuZNnPj3E/+I+9AXnHnHOLXfOLc/NzR1dUhEROatQxtAxswQGyvyXzrmnh9ikEph+2udFQPW5xxM/+9W7Rz/0tbtWFnuQRMQfQpnlYsBPgN3Oue8Os9mzwN2Ds10uAlqcczVhzCkiIiMI5Qh9FfBpoNzMtg1+7RtAMYBz7mHgReBGoALoAD4b/qgiInI2Ixa6c24tQ4+Rn76NA/46XKFERGT0dKWoiIhPqNBFRHwipFkuIuNlqJkvoNkvY6WZRLFFR+giIj6hQhcR8QkVuoiIT6jQRUR8QidFZUyGO3kpA8b75K6+HwI6QhcR8Q0VuoiIT6jQRUR8QoUuIuITOikqEuMa2roJmJGSFEdiXICBFbMlGqnQxXOdPf109fWTOSlBZRKCc53REgw61h9s4PU9tbyxt5aDde1/ei4xPsBHzy/kr66YTVl+2rlGlXGmQpdxFww6ntx8jEfXHqTuZDet3X0ATEqIY1rWJGZMSeHCkmzSkhM8Tuovzjn2HG/lxgffZs/xVhLjA1w0awp3rphOQlyAjp5+qps7+d3WKn6/rYrrFxRw/rQMMlMSvY4uIVKhy7jaUdnMN3+/k+2VLeSnJzEnP43ctCSSEgJUNXVS1dzJ67trWbOvjhUl2VxWlkvGJBX7uapq6uTZ7VUca+qkZEoK3/v4Yq5fUMikxLgPbfvV6+by03WHeGztIdYfbODzl80iS6UeFVToMm6+98o+Hnx9PzmpSXz/40to7+774BDLzIH/1Ld28+a+OjYcbGDjoUaunZ/Px1dMJy6g4ZjR6usP8vqeWtbsr2NyUjwfWzKNb9+xiIS44edDZE9O5KvXzeW6+QXc8eN3ePTtg3z+slk6Uo8CmuUi4+LHbx3ggdf287El03jtq6u5bem0YcfLc9KSuH1ZEV+5di5l+Wm8tPM4H//xeg7Vtw+5vQytpqWTH75ZwZv76lgyPYv7r57DipnZZy3z051flMFfrJpJZ28/j649REtnb4QTy7lSoUvE/WbzMf7lpT3ctKiQ79yxmPQQx8azJyfyqZXF3LGsiH0nWrnhgTU8vaUywmmjn3OODQcb+NGbB+jo6efui2dw+7KiIYdXRlKUlcJnL5lJe3cf/7n5GAN3m5SJSkMuElG7a07yy3ePcFlZDt/98yWjHjYxM5YWZ/HV6+by5V9v5Su/2c7Wo81886b5JMaHfjwSKzfO6Ozp53dbK9lZfZI5+ancvmw6qUmh/TUf7s9oenYK1y8s4Jlt1Ww91swFxVkx8+cZbXSELhHT2tXLb9+rZOG0DB7+1LJRFfCZCjKS+eVfruTey2fxiw1H+Pgj6zlxsiuMaaNfVfPAEMv7NSe5fkEBd19cEnKZj2RFSTbF2Sm8WF5D++CsJJl4VOgSMS+U19DTH+S7f76EyWEolvi4AN+48Tz+45MXsPd4K7c8tJYdlc1hSBrdnHO8e6iBH791gP6g4/OXzeLyObkEwjinP2DGbUun0dXbzx92Hg/b60p4qdAlIvYeb2VHZQtXzM2lNC81rK994/mFPHXfJcQHAtzx8Hqe214d1tePJt29/fxm8zGe2VbNzJzJfPHKUmZMmRyR9ypIT+ayslzeO9rEwbq2iLyHnBsVuoRdT1+QZ7ZXkZuWxOqy3Ii8x3mF6TzzxVUsKsrgb57Yynf/uJdgMLZO2FU1d/LQGxXsqGzhmvPy+cwlJWH5TehsrpybR2ZKAn98/0RE30fGRoUuYffa7hM0d/TysSXTiA9xitxY5KQm8cu/vIg/X17Eg69X8Fe/3EJHj//Hd4POsa6inoffOkBvf5C/vGwWV83LC+sQy3AS4wNcVprD0cYOjjRoGulEo1kuElYtnb28c7CBZcVZlOQM/OofqbvpnHrdxUWZtHX381J5DVf/ezO/ve8SpmVOish7RsJoZozUtHTys3WHqahrY15BGn92QVHEj8rPtGxGNq/urmVtRX3EhndkbHSELmG1Zn8dzjmunJc3bu9pZlxamsPdF5fQ2N7DLT9Yy7sHG8bt/ceDc47fb63iI99bw5HGdm5bMo1PXzRj3MscBo7SV87K5v3qkzS0dY/7+8vwVOgSNq1dvWw61MjS6VlkTx7/y8TnFqRx3xWzyUhJ4JOPvssv1h/2xYUwxxo7uOenm7j/yW3MzkvlS1eVceHMbE9Xprx41hQCAWNtRb1nGeTDVOgSNm/vr6c/6LhibmROhIYiLy2Z3//1Ki6fk8s3n9nF3z+1g67efs/ynIueviD/d81BrvveGjYdbuQfb57Pb79wCVNSk7yORlpyAkunZ7LlaJPmpU8gGkOXsGjr7uPdQw0snp7peeGkJyfw6N3L+d6r+/jB6xXsqj7JDQsLPfmtYaz2nWjl+gfWcLCunavm5fHPty2ccOcFVpXmsPlIExsONXD1vHyv4wgqdAmTdRX19PVH7uh8tCdWAwHjq9fNZWlxJvf/ehsPvbGfO5ZN57zC9IjkC9VI+3HiZBcv7zrOnuOtzMyZzGP3LOeqCVqW+enJlOWl8t6RJq6cOz6zbOTsNOQi56ynL8iGgw0smJZBXlqy13E+4Kp5+Tz/N5eRnZLILzYc4bkd1fT1B72O9SEtnb08taWSB1/bz+GGdq5fUMAf7r9swpb5KUuLM2nu6OVIQ4fXUQQdoUsYbD/WTHdfkFWzp3gdZUjFU1L4wurZvLTrOOsPNHC4vp07VxSTm+b9WHRbdx9v7a3l3UONOAaGMa6Yk0tKUjxJ8aNfHXG8zS/MIDGumm3HmpiZoymMXhvxCN3MHjOzWjPbOczzV5hZi5ltG/z4h/DHlInq1DoiBenJFGeneB1nWPFxAW5eNJVPXzSDls5efvD6ftZV1Ht2dWlHdx8v7zrO/3l5L+8caGBxUSZfuWYON55fSIoHUxHHKjE+wPyp6ZRXtdA7AX/ziTWh/OT8DHgIePws27ztnLspLIkkqlQ2dVLd0sUti6dGxQ2ezytM50tXlfG7rVW8UF5DXWs337lj0bhdINPe3cfainrWH2ygty/I+UUZXD0vf0L8tjBWS6dnsu1YM3uPt3odJeaNWOjOuTVmVhL5KBKN3j3UQGJ8gKXTM72OErL0SQncffEMthxt4o+7TnDt99bwhdWzuW/17DHdBCIUJzt7WVtRz8ZDjfT2B1k4LYOr5uWRnz6xzjmMxazcVNKS4tl2TCtfei1cv9tdbGbbgWrgb51zu4bayMzuBe4FKC7WQvjRrqOnjx2VLVwwI4ukhIkz3hvKjBgzY9mMbErz0nhpZw0Pvrafx985zEcWDtzpfqgZG2O5ecPxk12sP1DPlqPNBIOORUUZXDHXH0V+SlzAWDw9k/UHGmju6PnQvUd1M4zxE45C3wLMcM61mdmNwO+BsqE2dM49AjwCsHz58ui/hC/GbTnSRF/QsXJmttdRxixjUgJ3rijmwpltPL+9hic3HeO13SdYPSeXxdMziQ+MfiJYd18/O6taWH+wgUP17cQHjGUzsri8LDeq5sKPxpLpmaytqOeF8ho+uXKG13Fi1jkXunPu5GmPXzSz/zCzHOecrgn2sYGToY3MyE6hMGNiXfAyFrNyUvniVaXsqj7Jm3treWpLFX/YdYIFU9NZODVjxBkcTe09bDrcyEs7j/Pq+ydo7e4jMyWB6xcUsGxGlidrroynwoxk8tKSeGZbtQrdQ+f8U2ZmBcAJ55wzswsZmDnjr5WR5EOONnbQ0N7DFXPHbxGuSAuYcf60DBZOTWd/bRvvHWli29FmNh5qJCHO+NXGo8zKnUxhejJ9QUd3Xz+N7T3sqj5JZVMnMHDEf8P5BaQkxlOalxozF9uYGQumZvDWvloa23t8+5vIRDdioZvZE8AVQI6ZVQL/CCQAOOceBm4H7jOzPqATuNP5YUUkOautR5tJiDMWTvX2ystIMDPm5KcxJz+N3v4g+0+0cqi+ncT4ADurWnh9dy2J8QGS4gOkJsezeHomn7poBouKMlhRkk1CXCBiSwZPZPML03ljby2v76nl9mVFXseJSaHMcvnECM8/xMC0RokRXb397KhqZsHUjAl1MjQSEuICzJ+awfypGTqJN4KpmckUZiTzyvvHVege8ffAnkTEG3tq6eoNRtVURfkvkfrtwcy45rx8fvteJV29/ST7/B/7iUhrucioPbWlirTkeGaH+ebPEv2unZ9PZ28/67ROuidU6DIqDW3dvLm3liVFmTFzwk9Ct3JWNqlJ8by6WzeR9oIKXUbl+R019AUdS4uzvI4iE1BSfByr5+by6u5az9bJiWUqdBmVp7dUMr8wnYIM/1zpKOF13fx86lq72VappQDGmwpdQnaovp3tlS18bOk0r6PIBHbF3DziA8Yr72vYZbxplouE7Pnt1QDctLiQN/bUeZzG/6JxLvupzDOmpPDUe5VMz5q4Syr7kY7QJWTP7ahmRUmWLy71l8iak59GbWs3zR09XkeJKSp0Ccne463sO9HGzYuneh1FokBZfhoAFbVtHieJLSp0CcnzO6oJGNywsNDrKBIF8tOSSE+OZ58KfVyp0GVEzjme31HDxbOnRPWddWT8mBlleWlU1LbSr+mL40aFLiPaVX2SQ/Xt3LRIwy0SurL8VLp6g1Q1dXgdJWao0GVEz+2oJj5gXL+gwOsoEkVK81Ix0LDLOFKhy1k553h+ew2XluWQpTWuZRRSEuMpyprE/hO6efR4UaHLWW071kxVc6eGW2RMyvLTqGzqpKOnz+soMUGFLmf1YnkNCXHGtfPzvY4iUagsLxWHpi+OFxW6DMs5x4vlx7msLJeMSQlex5EoVJSVQnJCgP0q9HGhQpdhba9soaq5kxvP19xzGZu4gFGam8r+E63ozpSRp0KXYWm4RcKhNC+Nk1191LV1ex3F91ToMiTnHC/sqOHS0hwNt8g5mZ07GYADde0eJ/E/FboMaYeGWyRMsicnkpWSwAGNo0ecCl2GdGq45br5uphIzo2ZMTs3lYP1bQQ1jh5RKnT5kFNrt6wqzSEjRcMtcu5m551aBqDT6yi+pkKXD9Fwi4Tb7NxUAA7UadglklTo8iGnhls+ouEWCZPUpHgK0pNV6BGmQpcPcM7xQrmGWyT8ZudO5khDB739Qa+j+JYKXT6gvKqFyiYNt0j4leal0hd0HGnQcrqRokKXD3ihvIb4gHGdLiaSMCvJmUzANI4eSSp0+ZNTFxOtKs0hM0VL5Up4JcXHMT07RYUeQfFeB5CJ49Rwy5euLvM6SlT51btHvY4QNWbnpvLGnlo6e/q9juJLOkKXP9Fwi0Ta7NyB5XQP1esoPRJU6AKcWipXwy0SWdOzJ5EQZ1RoXZeIUKELMDDccqyxk49qdotEUHwgwMycyRpHj5ARC93MHjOzWjPbOczzZmYPmlmFme0wswvCH1Mi7fkdg2u3LNBwi0TWrJxU6lq7OXGyy+sovhPKEfrPgOvP8vwNQNngx73Aj849loynU7NbLivL1XCLRNzsvIFlANYfaPA4if+MOMvFObfGzErOssmtwONu4HYkG8ws08wKnXM1YcooEbbl6MCNoC+ZPUUzNs5CfzbhUZiRzKSEONZV1HPb0mlex/GVcIyhTwOOnfZ55eDXPsTM7jWzzWa2ua6uLgxvLeHw3PZqEuMDnFeY7nUUiQEBM2blTuadAw26LV2YhaPQbYivDfldcs494pxb7pxbnpubG4a3lnPVHxyY3XLl3FySE+K8jiMxYnZuKlXNnVoGIMzCUeiVwPTTPi8CqsPwujIONh1upLa1m5sXT/U6isSQU8vpvqNx9LAKR6E/C9w9ONvlIqBF4+fR47nt1UxKiOOqeXleR5EYkpOaSEF6MusO1HsdxVdGPClqZk8AVwA5ZlYJ/COQAOCcexh4EbgRqAA6gM9GKqyEV19/kD/sPM7V5+WRkqhVIGT8mBmXlE7hzb11BIOOQGCokVsZrVBmuXxihOcd8NdhSyTj5p0DDTS092i4RTyxanYOT2+pYs/xVuZP1Qn5cNCVojHsmW3VpCXHs3qOTlDL+FtVmgPA2grNeAsXFXqM6urt5+Vdx7lhYYFmt4gnCjKSKctLZW2FToyGiwo9Rr26+wRt3X3ctkQXdoh3VpXmsPFQA129Wk43HFToMer3W6vJT09i5awpXkeRGHZZWQ5dvUG2HG3yOoovaGqDzw11ufqN5xfw1r5a7rmkhDjNLhAPrZw1hbiAsXZ/PZfMzvE6TtTTEXoMeqG8ht5+x60abhGPpSbFs3R6JusqNB89HFToMeiZrdWU5qWyQFPFZAK4tCyHHVUttHT0eh0l6qnQY0xTRw8bDzdy25KpmGm4Rbx3aWkOzsE7umr0nKnQY8z2Y80A3LJYwy0yMSyenklqUjxrNexyzlToMcQ5x5ajTVxYkk3xlBSv44gAkBAX4KJZ2Sr0MFChx5BjjR3Ut/Vw+7Iir6OIfMCq0hyONHRwVMvpnhMVegzZcrSZhDjjxkW6EbRMLKeWn3hrv5YBOBcq9BjR2x9kR1UzC6ZmkJqkyw9kYpmZM5np2ZN4a2+t11Gimgo9RuyuOUlXb5ALirO8jiLyIWbGFXPyeOdAA919WgZgrFToMWLL0SYyJiUwK3ey11FEhrR6Ti4dPf1sPqxlAMZKhR4DTnb2sv9EG0uLMwlo7rlMUBfPnkJiXIA3NewyZir0GLD1WDMONNwiE9rkpHhWzMzirX06MTpWKnSfc86x+XAjJVNSyElN8jqOyFldMSePfSfaqG7u9DpKVFKh+9zB+nYa2ntYUZLtdRSREa2eOzh9UUfpY6JC97lNhxtJTgiwcFqG11FERlSWl8rUjGSNo4+RCt3Hmtp72FV9kqXTs0iI07daJj4zY/XcXNZVNNDbH/Q6TtTRFSY+MdSNLNZV1NMfdB8abhlqW5GJYvWcPJ7YeIxNhxt104tR0mGbTznn2HS4kelZkyjISPY6jkjILivLITE+wCvvn/A6StRRofvU0cYOalu7dTJUos7kpHhWzZ7CK++fwDnndZyookL3qY2HGkmKD3B+kU6GSvS5dn4BlU2d7Dne6nWUqKJC96G27j52VLWwtDiTpPg4r+OIjNo15+UBaNhllFToPrT5cCP9QcdFM6d4HUVkTPLSk1kyPVOFPkoqdJ8JOsfGQ43Myp1MXrpOhkr0unZ+PuVVLdS06KrRUKnQfWZPTSvNnb1cPEtH5xLdrpufD8Cru3WRUahU6D6z4WADGZMSmFeQ7nUUkXNSmpdKyZQUDbuMggrdR2pbu6ioa2PlzGziAlomV6KbmXHt/HzWH6intavX6zhRQYXuIxsONhIXMJZr7rn4xHULCujtd7y+R8MuoVCh+0RHTx9bjjSxuEj3DBX/WFacRUF6Ms9tr/E6SlQI6W++mV0PPADEAY865/71jOfvAb4DVA1+6SHn3KNhzCkj2HiokZ7+IKtKtfaFRIeh1hS6a2XxBz4PBIybFhXy8/WHaenoJSMlYZzSRacRj9DNLA74IXADMB/4hJnNH2LTJ51zSwY/VObjqKcvyPqDDZTmpVKYMcnrOCJhdfPiqfT2O15+/7jXUSa8UIZcLgQqnHMHnXM9wK+BWyMbS0bj2e3VtHb1camOzsWHFhVlUJydwnPbq72OMuGFUujTgGOnfV45+LUz/ZmZ7TCz35rZ9LCkkxE553j07YPkpydRlpfqdRyRsDMzbl5cyLqKeurbur2OM6GFUuhDzX87cwm054AS59wi4FXg50O+kNm9ZrbZzDbX1ekWU+Hw9v569hxv5dLSHMw0VVH86ZbF0wg6eKlcJ0fPJpRCrwROP+IuAj7wu49zrsE5d+qfzv8LLBvqhZxzjzjnljvnlufm5o4lr5zhkTUHyU1LYnFRptdRRCJmbkEac/JTNdtlBKHMctkElJnZTAZmsdwJ3HX6BmZW6Jw79Sd9C7A7rCllSFuONrG2op6v3zCPeN1iTnxguLtp3bWymJsXTeXfX9lHTUunTv4PY8QWcM71AV8EXmagqH/jnNtlZv9kZrcMbvYlM9tlZtuBLwH3RCqw/JcfvLafrJQEPnXRDK+jiETczYunAvD0lqoRtoxdIc1Dd869CLx4xtf+4bTHXwe+Ht5ocjbllS28sbeOv71uDpN1IZHEgJKcyVw4M5vfbD7GfatnE9DyFh+i39Oj1ENv7Cc9OZ67LynxOorIuPnEhdM50tDBhkMNXkeZkFToUWjP8ZO8vOsE96yaSXqyrpyT2HHDwkLSk+P59cZjI28cg/S7ehT6wesVTE6M4y9WlXgdRWRcnH6ydP7UDF4or+F/3bKArMmJHqaaeHSEHmXKK1t4YUcNn101k8wU/TBL7FlRkkV/0PG7rTo5eiYVepT59st7yEpJ4N7Vs7yOIuKJwoxJFGVN4tebjuLcmdc4xjYVehRZu7+et/fX89dXlmrsXGLaihnZ7DvRxpajzV5HmVBU6FEiGHT82x/2MC1zEp++WPPOJbYtKsogLSmen6475HWUCUWFHiVeKK+hvKqFr1w7h6T4OK/jiHgqKSGOu1YW82J5DccaO7yOM2Go0KNAV28/33l5L/MK0rht6VALXYrEns+umklcwPjJWh2ln6JCjwIPv3WAo40dfPOm+br5s8iggoxkbl0yjSc3HaOpvcfrOBOCCn2CO9rQwX+8eYCbFhXq9nIiZ7j38ll09vbziw1HvI4yIajQJzDnHN96bhcJAeN/fnSou/6JxLY5+WlcNS+Pn79zmK7efq/jeE6FPoG9uruW1/fUcv81cyjISPY6jsiEdO/ls2ho7+E/N2s5ABX6BNXa1cu3nt3FnPxU7tEl/iLDWjkzmwtLsnngtQrau/u8juMpFfoE9U/PvU9NSyf/8t/OJ0E3rxAZlpnxtRvnUd/WzaNvx/aMFzXFBPTHXcf5z/cq+cLq2Sybke11HJEJ74LiLG48v4AfrzlAXWvs3khahT7B1Ld18/Wny5lfmM7918zxOo5I1PjvH5lHT1+QB17b53UUz6jQJxDnHF9/upzWrj6+9/ElJMbr2yMSqpk5k7lrZTFPbDzGgbo2r+N4Qo0xgTz81kFeef8Ef3f9XOYWpHkdRyTqfOnqMpLjA3zr2V0xuRKjCn2CeGNvLd9+eQ83L57K5y6d6XUckaiUk5rE126Yx9v76/lNDE5j1B2LJoCDdW186YmtnFeQzrf/bBFmA5f3n36XFhH5oOH+fnxy5QxeKK/hfz+/m8vKcpmaOWmck3lHR+gea2rv4fOPbyYhLsAjdy9jUqJWUhQ5F4GA8e0/W0xfcOCcVCwNvajQPdTS2cunH3uXY02d/OiTF1CUleJ1JBFfKJ6SwtdumMdb++piauhFhe6Rtu4+PvPYRvYeb+XHn17GyllTvI4k4iufvmgGl8yewjef2cW2Y7FxZyMVugdOdvXyFz/dRHlVCw/ddQFXzs3zOpKI7wQCxkN3XUB+ehL3Pr6Z4y1dXkeKOBX6OPvh6xVc8+9vsflII3csK6KhTes4i0RK9uREHr17Be3dfdz7i82+X5FRhT6Oth5t4j/eOsDJrl7uuWQmi4oyvY4k4ntzC9L4/p1LKa9q4UtPbKWnL+h1pIhRoY+DYNDx83cOc+cjG0iKD/CFy2dTmpfqdSyRmHHt/Hy+dfMC/vj+CT7/+GY6e/x5pK556BFW3dzJ3/12B2sr6lk9J5dVpTmkJumPXWS8feaSEpLiA3z9d+V85qcb+clnlpOWnOB1rLDSEXqE9PQFeWztIT7y/TW8d6SJ//9jC/nZZ1eozEU8dOeFxTx451K2HGnijofXs/9Eq9eRwkrtEmbBoOPFnTV8+w97OdrYwaWlOfzv2wZUznIAAAirSURBVBZSkjPZ62giAty8eCoZkxL4/57cxs0PreWbN83nrguL/3SFdjQzr66iWr58udu8ebMn7x0J7d19PL2lkp++c5iDde0UpCdz/cICyvJSffGDIhIt7lpZHNJ2ta1dfPU323l7fz1Xzs3l6zeex5z8ib8onpm955xbPtRzOkI/B/1Bx7sHG3huRw3P76imtauPRUUZPHDnElq7+gioyEUmrLy0ZH7+2Qv56TuH+f4r+/jI99fwsaXTuP/qORRPic6rtlXoo1R7sot1B+pZV9HAm3vrqG/rJiUxjmvn53P3xTO4oDgLM9PCWiJRIBAwPnfpTP7b0mn86K0D/Oydw/xuaxWXluZw+7IiPrKggOSE6FlfKaRCN7PrgQeAOOBR59y/nvF8EvA4sAxoAD7unDsc3qjjq7c/yLHGDg7Vt7P3RCs7q1oor2rhWGMnAJkpCawqzeGj5xdy5dw8LaolEsWyJifyjRvP47OrSnhi4zGeeq+SL/96G5MS4lgxM5uLZ01h5axs5uanMXkCT2wYMZmZxQE/BK4FKoFNZvasc+790zb7HNDknCs1szuBfwM+HonAZ+OcI+gGhkKCztHTH6Sv39HbH6S7N0h3Xz9dvUHae/po7+6jrbuPk529NHX00tTRQ11rN8dbujh+souali76g/91fqE4O4VF0zIH14fIYX5hOoGAhlRE/KQwYxJfuXYO919dxoaDDby86zjrDzbwb3/Y86dtpmVOojQvlamZyRSkTyI/PYnMlATSkxNIS05gUmIcyQkBkhPiSIwPkBAIEB9nxJlFvDNC+afmQqDCOXcQwMx+DdwKnF7otwLfGnz8W+AhMzMXgTOuL5XX8OUnt4EDh8M5cEDQDTweq9SkeHJSEynISGZFSTbTMicxM2cyJTmTKc1NJSPFX/NVRWR4gYBxSWkOl5TmAAMnULccaaaitpV9J9o4UNfGruoW6sewdEfA4AurZ/N3188Ld+yQCn0acPr6k5XAyuG2cc71mVkLMAWoP30jM7sXuHfw0zYz2zuW0OMkhzPy+4if9w38vX9+3jcIw/59MkxBIuBP+/b3/wp/P/bXmTHcE6EU+lC/I5x5LBzKNjjnHgEeCeE9PWdmm4ebGhTt/Lxv4O/98/O+gb/3bzz2LZQrRSuB6ad9XgRUD7eNmcUDGUBjOAKKiEhoQin0TUCZmc00s0TgTuDZM7Z5FvjM4OPbgdcjMX4uIiLDG3HIZXBM/IvAywxMW3zMObfLzP4J2Oycexb4CfALM6tg4Mj8zkiGHidRMTQ0Rn7eN/D3/vl538Df+xfxffPs0n8REQkvrbYoIuITKnQREZ+I+UI3s+vNbK+ZVZjZ14Z4PsnMnhx8/l0zKxn/lGMTwr59xczeN7MdZvaamQ07v3UiGmn/TtvudjNzZhY10+FC2Tcz+/PB798uM/vVeGc8FyH8bBab2RtmtnXw5/NGL3KOhZk9Zma1ZrZzmOfNzB4c3PcdZnZB2N7cORezHwyc5D0AzAISge3A/DO2+Svg4cHHdwJPep07jPt2JZAy+Pi+aNm3UPdvcLs0YA2wAVjude4wfu/KgK1A1uDneV7nDvP+PQLcN/h4PnDY69yj2L/LgQuAncM8fyPwEgPX71wEvBuu9471I/Q/LWvgnOsBTi1rcLpbgZ8PPv4tcLVFxwLnI+6bc+4N51zH4KcbGLjGIFqE8r0D+Gfg20DXeIY7R6Hs2+eBHzrnmgCcc7XjnPFchLJ/DkgffJzBh699mbCcc2s4+3U4twKPuwEbgEwzKwzHe8d6oQ+1rMG04bZxzvUBp5Y1mOhC2bfTfY6Bo4ZoMeL+mdlSYLpz7vnxDBYGoXzv5gBzzGydmW0YXBE1WoSyf98CPmVmlcCLwN+MT7RxMdq/myGbuOtAjo+wLWswAYWc28w+BSwHVkc0UXiddf/MLAB8D7hnvAKFUSjfu3gGhl2uYOA3q7fNbKFzrjnC2cIhlP37BPAz59y/m9nFDFznstA5F4x8vIiLWKfE+hG6n5c1CGXfMLNrgP8B3OKc6x6nbOEw0v6lAQuBN83sMANjlc9GyYnRUH8un3HO9TrnDgF7GSj4aBDK/n0O+A2Ac249kMzA4lZ+ENLfzbGI9UL387IGI+7b4JDEjxko82gag4UR9s851+Kcy3HOlTjnShg4R3CLcy4abmQbys/l7xk4qY2Z5TAwBHNwXFOOXSj7dxS4GsDMzmOg0OvGNWXkPAvcPTjb5SKgxTlXE5ZX9vqMsNcfDJxx3sfAWff/Mfi1f2LgLz8M/CD9J1ABbARmeZ05jPv2KnAC2Db48azXmcO5f2ds+yZRMsslxO+dAd9l4L4E5cCdXmcO8/7NB9YxMANmG3Cd15lHsW9PADVALwNH458DvgB84bTv3Q8H9708nD+XuvRfRMQnYn3IRUTEN1ToIiI+oUIXEfEJFbqIiE+o0EVEfEKFLr5nZplm9lde5xCJNBW6xIJMBlbNFPE1FbrEgn8FZpvZNjP7jpn9dzPbNLgW9f8CMLMSM9tjZo+a2U4z+6WZXTO4+NV+M7twcLtvmdkvzOz1wa9/3tM9EzmNCl1iwdeAA865JcArDKx5ciGwBFhmZpcPblcKPAAsAuYBdwGXAn8LfOO011sEfBS4GPgHM5s6HjshMhIVusSa6wY/tgJbGCjuU4taHXLOlbuBFf12Aa+5gUupy4GS017jGedcp3OuHniDgX8cRDwX68vnSuwx4F+ccz/+wBcHbi14+mqTwdM+D/LBvytnrpeh9TNkQtARusSCVgaW0wV4GfgLM0sFMLNpZpY3yte71cySzWwKA+uRbwpbUpFzoCN08T3nXMPgyc2dDNyV6VfA+sE7CbYBnwL6R/GSG4EXgGLgn51zUXN7NPE3rbYoMgpm9i2gzTn3f7zOInImDbmIiPiEjtBFRHxCR+giIj6hQhcR8QkVuoiIT6jQRUR8QoUuIuIT/w9vqpSkpzAEJQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "sn.distplot(train[\"temp\"], bins=40, kde=True)\n",
    "plt.xlabel(\"temp\", fontsize=10)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "sn.distplot(train[\"atemp\"], bins=40, kde=True)\n",
    "plt.xlabel(\"atemp\", fontsize=10)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "sn.distplot(train[\"hum\"], bins=40, kde=True)\n",
    "plt.xlabel(\"hum\", fontsize=10)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "sn.distplot(train[\"windspeed\"], bins=40, kde=True)\n",
    "plt.xlabel(\"windspeed\", fontsize=10)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "####   数值型特征的箱体图 boxplot& 提琴形图Violinplot"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "箱形图可以可视化特征的分位数等统计量，主要用于离群点的发现。其主要组成部分是箱子（box），须（whisker）和一些单独的数据点（离群值）。\n",
    "\n",
    "箱子显示了分布的四分位距；它的长度由25%（Q1，下四分位数）和75%（Q3，上司分位数）决定。箱中的水平线表示中位数（50%）。\n",
    "\n",
    "从箱子处延伸出来的线被称为须，表示数据点的总体散布，即位于区间(Q1 - 1.5xIQR, Q3 + 1.5xIQR)的数据点，其中IQR是四分位距：IQR= Q3 - Q1。\n",
    "\n",
    "离群值是须之外的数据点，它们作为单独的数据点，沿着中轴绘制。\n",
    "\n",
    "Violinplot结合了箱线图（boxplot）与核密度估计图的特点，可用于一个或多个分类变量情况下，连续变量数据的分布并进行了比较。 Violinplot还可以用于观察多个数据分布（如观察某个变量和标签之间的关系，本notebook最后部分）。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "_, axes = plt.subplots(1, 2, sharey=True, figsize=(6, 4))\n",
    "sn.boxplot(data=train[\"cnt\"], ax=axes[0]); \n",
    "sn.violinplot(data=train[\"cnt\"], ax=axes[1]);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "_, axes = plt.subplots(1, 2, sharey=True, figsize=(6, 4))\n",
    "sn.boxplot(data=train[\"temp\"], ax=axes[0]); \n",
    "sn.violinplot(data=train[\"temp\"], ax=axes[1]);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "_, axes = plt.subplots(1, 2, sharey=True, figsize=(6, 4))\n",
    "sn.boxplot(data=train[\"atemp\"], ax=axes[0]); \n",
    "sn.violinplot(data=train[\"atemp\"], ax=axes[1]);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "_, axes = plt.subplots(1, 2, sharey=True, figsize=(6, 4))\n",
    "sn.boxplot(data=train[\"hum\"], ax=axes[0]); \n",
    "sn.violinplot(data=train[\"hum\"], ax=axes[1]);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "_, axes = plt.subplots(1, 2, sharey=True, figsize=(6, 4))\n",
    "sn.boxplot(data=train[\"windspeed\"], ax=axes[0]); \n",
    "sn.violinplot(data=train[\"windspeed\"], ax=axes[1]);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.2 特征与目标标签之间的关系"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "####  每年骑行量的分布\n",
    "violinplot中用x表示类别（年）信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1fb46cdee08>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sn.violinplot(data=train[['yr',\n",
    "                        'cnt']],\n",
    "              x=\"yr\",y=\"cnt\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第一年和第二年图形相差挺大的，说明骑行量和年份有较大的关系"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 季节与骑车数量的关系\n",
    "\n",
    "violinplot得到详细分布\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1fb46b2d608>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sn.violinplot(data=train[['season',\n",
    "                        'cnt']],\n",
    "              x=\"season\",y=\"cnt\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "能看出来每个季节骑行量的分布不同,\n",
    "barplot利用矩阵条的高度反映数值变量的集中趋势，以及使用errorbar功能（差棒图）来估计变量之间的差值统计。\n",
    "谨记barplot展示的是某种变量分布的平均值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Text(0.5, 1.0, 'Seasonly distribution of counts')]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,ax = plt.subplots()\n",
    "sn.barplot(data=train[['season',\n",
    "                       'cnt']],\n",
    "           x=\"season\",y=\"cnt\")\n",
    "ax.set(title=\"Seasonly distribution of counts\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "夏天2和秋天3的分布比较相似，春天1和冬天4互相的差异较大，说明每天的骑行量和季节也有关系,第2、3、4季度的骑行量明显高于第1季度\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "####   月份与骑车数量的关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Text(0.5, 1.0, 'Monthly distribution of counts')]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,ax = plt.subplots()\n",
    "sn.barplot(data=train[['mnth',\n",
    "                       'cnt']],\n",
    "           x=\"mnth\",y=\"cnt\")\n",
    "ax.set(title=\"Monthly distribution of counts\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "月份对每日骑车数量的影响，比较平稳"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 天气和骑车数辆的关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Text(0.5, 1.0, 'weathersit distribution of counts')]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,ax = plt.subplots()\n",
    "sn.barplot(data=train[['weathersit',\n",
    "                       'cnt']],\n",
    "           x=\"weathersit\",y=\"cnt\")\n",
    "ax.set(title=\"weathersit distribution of counts\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "####  工作日和节假日的分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1fb4451ea48>"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,(ax1,ax2) = plt.subplots(ncols=2)\n",
    "sn.barplot(data=train,x='holiday',y='cnt',ax=ax1)\n",
    "sn.barplot(data=train,x='workingday',y='cnt',ax=ax2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 数值型特征和y之间的相关性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1fb444f55c8>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "corrMatt = train[[\"temp\",\"atemp\",\n",
    "                  \"hum\",\"windspeed\",\n",
    "                  \"cnt\"]].corr()\n",
    "mask = np.array(corrMatt)\n",
    "mask[np.tril_indices_from(mask)] = False\n",
    "sn.heatmap(corrMatt, mask=mask,\n",
    "           vmax=.8, square=True,annot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "体感温度和温度高度相关,\n",
    "目标cnt与温度正相关、湿度和风速负相关"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 1.3   两两数值特征之间的相关性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1fb467cddc8>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#get the names of all the columns\n",
    "cols = train.columns \n",
    "\n",
    "# 通常认为相关系数大于0.5的为强相关\n",
    "data_corr = train.corr()\n",
    "sn.heatmap(data_corr,annot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "temp,atemp,两个数值特征和cnt是强相关"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 936x648 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 得到相关系数的绝对值，通常认为相关系数的绝对值大于0.5的特征为强相关\n",
    "data_corr = data_corr.abs()\n",
    "plt.subplots(figsize=(13, 9))\n",
    "sn.heatmap(data_corr,annot=True)\n",
    "\n",
    "# Mask unimportant features,突出重要信息\n",
    "sn.heatmap(data_corr, mask=data_corr < 0.5, cbar=False)\n",
    "\n",
    "#plt.savefig(\"house_coor.png\" )\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#  2.对数据进行适当的特征工程"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "数据预处理对训练数据和测试数据需进行同样处理，因此将二者一起读入"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>dteday</th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>casual</th>\n",
       "      <th>registered</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>2011-01-01</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.344167</td>\n",
       "      <td>0.363625</td>\n",
       "      <td>0.805833</td>\n",
       "      <td>0.160446</td>\n",
       "      <td>331</td>\n",
       "      <td>654</td>\n",
       "      <td>985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>2011-01-02</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.363478</td>\n",
       "      <td>0.353739</td>\n",
       "      <td>0.696087</td>\n",
       "      <td>0.248539</td>\n",
       "      <td>131</td>\n",
       "      <td>670</td>\n",
       "      <td>801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>2011-01-03</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.196364</td>\n",
       "      <td>0.189405</td>\n",
       "      <td>0.437273</td>\n",
       "      <td>0.248309</td>\n",
       "      <td>120</td>\n",
       "      <td>1229</td>\n",
       "      <td>1349</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>2011-01-04</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>0.212122</td>\n",
       "      <td>0.590435</td>\n",
       "      <td>0.160296</td>\n",
       "      <td>108</td>\n",
       "      <td>1454</td>\n",
       "      <td>1562</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>2011-01-05</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.226957</td>\n",
       "      <td>0.229270</td>\n",
       "      <td>0.436957</td>\n",
       "      <td>0.186900</td>\n",
       "      <td>82</td>\n",
       "      <td>1518</td>\n",
       "      <td>1600</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   instant      dteday  season  yr  mnth  holiday  weekday  workingday  \\\n",
       "0        1  2011-01-01       1   0     1        0        6           0   \n",
       "1        2  2011-01-02       1   0     1        0        0           0   \n",
       "2        3  2011-01-03       1   0     1        0        1           1   \n",
       "3        4  2011-01-04       1   0     1        0        2           1   \n",
       "4        5  2011-01-05       1   0     1        0        3           1   \n",
       "\n",
       "   weathersit      temp     atemp       hum  windspeed  casual  registered  \\\n",
       "0           2  0.344167  0.363625  0.805833   0.160446     331         654   \n",
       "1           2  0.363478  0.353739  0.696087   0.248539     131         670   \n",
       "2           1  0.196364  0.189405  0.437273   0.248309     120        1229   \n",
       "3           1  0.200000  0.212122  0.590435   0.160296     108        1454   \n",
       "4           1  0.226957  0.229270  0.436957   0.186900      82        1518   \n",
       "\n",
       "    cnt  \n",
       "0   985  \n",
       "1   801  \n",
       "2  1349  \n",
       "3  1562  \n",
       "4  1600  "
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 读入数据\n",
    "train = pd.read_csv(\"day.csv\")\n",
    "train.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 731 entries, 0 to 730\n",
      "Data columns (total 16 columns):\n",
      "instant       731 non-null int64\n",
      "dteday        731 non-null object\n",
      "season        731 non-null int64\n",
      "yr            731 non-null int64\n",
      "mnth          731 non-null int64\n",
      "holiday       731 non-null int64\n",
      "weekday       731 non-null int64\n",
      "workingday    731 non-null int64\n",
      "weathersit    731 non-null int64\n",
      "temp          731 non-null float64\n",
      "atemp         731 non-null float64\n",
      "hum           731 non-null float64\n",
      "windspeed     731 non-null float64\n",
      "casual        731 non-null int64\n",
      "registered    731 non-null int64\n",
      "cnt           731 non-null int64\n",
      "dtypes: float64(4), int64(11), object(1)\n",
      "memory usage: 91.5+ KB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "没有缺失数据"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###   特征工程：类别型特征编码\n",
    "对类别型特征进行独热编码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>season_1</th>\n",
       "      <th>season_2</th>\n",
       "      <th>season_3</th>\n",
       "      <th>season_4</th>\n",
       "      <th>mnth_1</th>\n",
       "      <th>mnth_2</th>\n",
       "      <th>mnth_3</th>\n",
       "      <th>mnth_4</th>\n",
       "      <th>mnth_5</th>\n",
       "      <th>mnth_6</th>\n",
       "      <th>...</th>\n",
       "      <th>weathersit_1</th>\n",
       "      <th>weathersit_2</th>\n",
       "      <th>weathersit_3</th>\n",
       "      <th>weekday_0</th>\n",
       "      <th>weekday_1</th>\n",
       "      <th>weekday_2</th>\n",
       "      <th>weekday_3</th>\n",
       "      <th>weekday_4</th>\n",
       "      <th>weekday_5</th>\n",
       "      <th>weekday_6</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 26 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   season_1  season_2  season_3  season_4  mnth_1  mnth_2  mnth_3  mnth_4  \\\n",
       "0         1         0         0         0       1       0       0       0   \n",
       "1         1         0         0         0       1       0       0       0   \n",
       "2         1         0         0         0       1       0       0       0   \n",
       "3         1         0         0         0       1       0       0       0   \n",
       "4         1         0         0         0       1       0       0       0   \n",
       "\n",
       "   mnth_5  mnth_6  ...  weathersit_1  weathersit_2  weathersit_3  weekday_0  \\\n",
       "0       0       0  ...             0             1             0          0   \n",
       "1       0       0  ...             0             1             0          1   \n",
       "2       0       0  ...             1             0             0          0   \n",
       "3       0       0  ...             1             0             0          0   \n",
       "4       0       0  ...             1             0             0          0   \n",
       "\n",
       "   weekday_1  weekday_2  weekday_3  weekday_4  weekday_5  weekday_6  \n",
       "0          0          0          0          0          0          1  \n",
       "1          0          0          0          0          0          0  \n",
       "2          1          0          0          0          0          0  \n",
       "3          0          1          0          0          0          0  \n",
       "4          0          0          1          0          0          0  \n",
       "\n",
       "[5 rows x 26 columns]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#对类别型特征，观察其取值范围及直方图\n",
    "categorical_features = ['season','mnth','weathersit','weekday']\n",
    "\n",
    "#数据类型变为object，才能被get_dummies处理\n",
    "for col in categorical_features:\n",
    "    #强制转换数据类型\n",
    "    train[col] = train[col].astype('object')\n",
    "    #categori\n",
    "X_train_cat = train[categorical_features]\n",
    "X_train_cat = pd.get_dummies(X_train_cat)\n",
    "#X_train_cat独热编码好后的对象\n",
    "X_train_cat.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 731 entries, 0 to 730\n",
      "Data columns (total 26 columns):\n",
      "season_1        731 non-null uint8\n",
      "season_2        731 non-null uint8\n",
      "season_3        731 non-null uint8\n",
      "season_4        731 non-null uint8\n",
      "mnth_1          731 non-null uint8\n",
      "mnth_2          731 non-null uint8\n",
      "mnth_3          731 non-null uint8\n",
      "mnth_4          731 non-null uint8\n",
      "mnth_5          731 non-null uint8\n",
      "mnth_6          731 non-null uint8\n",
      "mnth_7          731 non-null uint8\n",
      "mnth_8          731 non-null uint8\n",
      "mnth_9          731 non-null uint8\n",
      "mnth_10         731 non-null uint8\n",
      "mnth_11         731 non-null uint8\n",
      "mnth_12         731 non-null uint8\n",
      "weathersit_1    731 non-null uint8\n",
      "weathersit_2    731 non-null uint8\n",
      "weathersit_3    731 non-null uint8\n",
      "weekday_0       731 non-null uint8\n",
      "weekday_1       731 non-null uint8\n",
      "weekday_2       731 non-null uint8\n",
      "weekday_3       731 non-null uint8\n",
      "weekday_4       731 non-null uint8\n",
      "weekday_5       731 non-null uint8\n",
      "weekday_6       731 non-null uint8\n",
      "dtypes: uint8(26)\n",
      "memory usage: 18.7 KB\n"
     ]
    }
   ],
   "source": [
    "X_train_cat.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数值型特征\n",
    "对数值型特征进行标准化/MinMaxScaler，去量纲"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.355170</td>\n",
       "      <td>0.373517</td>\n",
       "      <td>0.828620</td>\n",
       "      <td>0.284606</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.379232</td>\n",
       "      <td>0.360541</td>\n",
       "      <td>0.715771</td>\n",
       "      <td>0.466215</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.171000</td>\n",
       "      <td>0.144830</td>\n",
       "      <td>0.449638</td>\n",
       "      <td>0.465740</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.175530</td>\n",
       "      <td>0.174649</td>\n",
       "      <td>0.607131</td>\n",
       "      <td>0.284297</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.209120</td>\n",
       "      <td>0.197158</td>\n",
       "      <td>0.449313</td>\n",
       "      <td>0.339143</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       temp     atemp       hum  windspeed\n",
       "0  0.355170  0.373517  0.828620   0.284606\n",
       "1  0.379232  0.360541  0.715771   0.466215\n",
       "2  0.171000  0.144830  0.449638   0.465740\n",
       "3  0.175530  0.174649  0.607131   0.284297\n",
       "4  0.209120  0.197158  0.449313   0.339143"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#数值型变量预处理，\n",
    "#用MinMaxScaler处理数据\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "# MinMaxScaler对象\n",
    "mn_X = MinMaxScaler()\n",
    "numerical_features = ['temp','atemp','hum','windspeed']\n",
    "temper= mn_X.fit_transform(train[numerical_features])\n",
    "\n",
    "X_train_num = pd.DataFrame(data=temper, columns=numerical_features, index =train.index)\n",
    "#X_train_num是标准化去量纲后的数值型特征\n",
    "X_train_num.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 连接类别型特征X_train_cat和数值型特征X_train_num到X_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>season_1</th>\n",
       "      <th>season_2</th>\n",
       "      <th>season_3</th>\n",
       "      <th>season_4</th>\n",
       "      <th>mnth_1</th>\n",
       "      <th>mnth_2</th>\n",
       "      <th>mnth_3</th>\n",
       "      <th>mnth_4</th>\n",
       "      <th>mnth_5</th>\n",
       "      <th>mnth_6</th>\n",
       "      <th>...</th>\n",
       "      <th>weekday_3</th>\n",
       "      <th>weekday_4</th>\n",
       "      <th>weekday_5</th>\n",
       "      <th>weekday_6</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>holiday</th>\n",
       "      <th>workingday</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.355170</td>\n",
       "      <td>0.373517</td>\n",
       "      <td>0.828620</td>\n",
       "      <td>0.284606</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.379232</td>\n",
       "      <td>0.360541</td>\n",
       "      <td>0.715771</td>\n",
       "      <td>0.466215</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.171000</td>\n",
       "      <td>0.144830</td>\n",
       "      <td>0.449638</td>\n",
       "      <td>0.465740</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.175530</td>\n",
       "      <td>0.174649</td>\n",
       "      <td>0.607131</td>\n",
       "      <td>0.284297</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.209120</td>\n",
       "      <td>0.197158</td>\n",
       "      <td>0.449313</td>\n",
       "      <td>0.339143</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 32 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   season_1  season_2  season_3  season_4  mnth_1  mnth_2  mnth_3  mnth_4  \\\n",
       "0         1         0         0         0       1       0       0       0   \n",
       "1         1         0         0         0       1       0       0       0   \n",
       "2         1         0         0         0       1       0       0       0   \n",
       "3         1         0         0         0       1       0       0       0   \n",
       "4         1         0         0         0       1       0       0       0   \n",
       "\n",
       "   mnth_5  mnth_6  ...  weekday_3  weekday_4  weekday_5  weekday_6      temp  \\\n",
       "0       0       0  ...          0          0          0          1  0.355170   \n",
       "1       0       0  ...          0          0          0          0  0.379232   \n",
       "2       0       0  ...          0          0          0          0  0.171000   \n",
       "3       0       0  ...          0          0          0          0  0.175530   \n",
       "4       0       0  ...          1          0          0          0  0.209120   \n",
       "\n",
       "      atemp       hum  windspeed  holiday  workingday  \n",
       "0  0.373517  0.828620   0.284606        0           0  \n",
       "1  0.360541  0.715771   0.466215        0           0  \n",
       "2  0.144830  0.449638   0.465740        0           1  \n",
       "3  0.174649  0.607131   0.284297        0           1  \n",
       "4  0.197158  0.449313   0.339143        0           1  \n",
       "\n",
       "[5 rows x 32 columns]"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Join categorical and numerical features\n",
    "X_train = pd.concat([X_train_cat, X_train_num, train['holiday'],  train['workingday']], axis = 1, ignore_index=False)\n",
    "X_train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 把做好特征工程的数据存放在FE_day.csv文件内备用"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>season_1</th>\n",
       "      <th>season_2</th>\n",
       "      <th>season_3</th>\n",
       "      <th>season_4</th>\n",
       "      <th>mnth_1</th>\n",
       "      <th>mnth_2</th>\n",
       "      <th>mnth_3</th>\n",
       "      <th>mnth_4</th>\n",
       "      <th>mnth_5</th>\n",
       "      <th>...</th>\n",
       "      <th>weekday_5</th>\n",
       "      <th>weekday_6</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>holiday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>yr</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.355170</td>\n",
       "      <td>0.373517</td>\n",
       "      <td>0.828620</td>\n",
       "      <td>0.284606</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.379232</td>\n",
       "      <td>0.360541</td>\n",
       "      <td>0.715771</td>\n",
       "      <td>0.466215</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.171000</td>\n",
       "      <td>0.144830</td>\n",
       "      <td>0.449638</td>\n",
       "      <td>0.465740</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1349</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.175530</td>\n",
       "      <td>0.174649</td>\n",
       "      <td>0.607131</td>\n",
       "      <td>0.284297</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1562</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.209120</td>\n",
       "      <td>0.197158</td>\n",
       "      <td>0.449313</td>\n",
       "      <td>0.339143</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1600</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 35 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   instant  season_1  season_2  season_3  season_4  mnth_1  mnth_2  mnth_3  \\\n",
       "0        1         1         0         0         0       1       0       0   \n",
       "1        2         1         0         0         0       1       0       0   \n",
       "2        3         1         0         0         0       1       0       0   \n",
       "3        4         1         0         0         0       1       0       0   \n",
       "4        5         1         0         0         0       1       0       0   \n",
       "\n",
       "   mnth_4  mnth_5  ...  weekday_5  weekday_6      temp     atemp       hum  \\\n",
       "0       0       0  ...          0          1  0.355170  0.373517  0.828620   \n",
       "1       0       0  ...          0          0  0.379232  0.360541  0.715771   \n",
       "2       0       0  ...          0          0  0.171000  0.144830  0.449638   \n",
       "3       0       0  ...          0          0  0.175530  0.174649  0.607131   \n",
       "4       0       0  ...          0          0  0.209120  0.197158  0.449313   \n",
       "\n",
       "   windspeed  holiday  workingday  yr   cnt  \n",
       "0   0.284606        0           0   0   985  \n",
       "1   0.466215        0           0   0   801  \n",
       "2   0.465740        0           1   0  1349  \n",
       "3   0.284297        0           1   0  1562  \n",
       "4   0.339143        0           1   0  1600  \n",
       "\n",
       "[5 rows x 35 columns]"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#contact函数，在X_train的矩阵内，加入instant，yr,cnt列\n",
    "FE_train = pd.concat([train['instant'], X_train,  train['yr'],train['cnt']], axis = 1)\n",
    "FE_train.to_csv('FE_day.csv', index=False)\n",
    "FE_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 731 entries, 0 to 730\n",
      "Data columns (total 35 columns):\n",
      "instant         731 non-null int64\n",
      "season_1        731 non-null uint8\n",
      "season_2        731 non-null uint8\n",
      "season_3        731 non-null uint8\n",
      "season_4        731 non-null uint8\n",
      "mnth_1          731 non-null uint8\n",
      "mnth_2          731 non-null uint8\n",
      "mnth_3          731 non-null uint8\n",
      "mnth_4          731 non-null uint8\n",
      "mnth_5          731 non-null uint8\n",
      "mnth_6          731 non-null uint8\n",
      "mnth_7          731 non-null uint8\n",
      "mnth_8          731 non-null uint8\n",
      "mnth_9          731 non-null uint8\n",
      "mnth_10         731 non-null uint8\n",
      "mnth_11         731 non-null uint8\n",
      "mnth_12         731 non-null uint8\n",
      "weathersit_1    731 non-null uint8\n",
      "weathersit_2    731 non-null uint8\n",
      "weathersit_3    731 non-null uint8\n",
      "weekday_0       731 non-null uint8\n",
      "weekday_1       731 non-null uint8\n",
      "weekday_2       731 non-null uint8\n",
      "weekday_3       731 non-null uint8\n",
      "weekday_4       731 non-null uint8\n",
      "weekday_5       731 non-null uint8\n",
      "weekday_6       731 non-null uint8\n",
      "temp            731 non-null float64\n",
      "atemp           731 non-null float64\n",
      "hum             731 non-null float64\n",
      "windspeed       731 non-null float64\n",
      "holiday         731 non-null int64\n",
      "workingday      731 non-null int64\n",
      "yr              731 non-null int64\n",
      "cnt             731 non-null int64\n",
      "dtypes: float64(4), int64(5), uint8(26)\n",
      "memory usage: 70.1 KB\n"
     ]
    }
   ],
   "source": [
    "FE_train.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "经过标准化的数据，离散型特征采用了独热编码，数值型特征采用了minmax标准化，核对特征标签数量无误"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#  3.对全体数据训练和测试\n",
    " 对80%的数据进行训练，对20%的数据进行测试，评价指标为RMSE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(731, 35)"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "FE_train = pd.read_csv(\"FE_day.csv\")\n",
    "FE_train.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  划分样本特征x，和样本输出y总租车人数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>season_1</th>\n",
       "      <th>season_2</th>\n",
       "      <th>season_3</th>\n",
       "      <th>season_4</th>\n",
       "      <th>mnth_1</th>\n",
       "      <th>mnth_2</th>\n",
       "      <th>mnth_3</th>\n",
       "      <th>mnth_4</th>\n",
       "      <th>mnth_5</th>\n",
       "      <th>...</th>\n",
       "      <th>weekday_4</th>\n",
       "      <th>weekday_5</th>\n",
       "      <th>weekday_6</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>holiday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>yr</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.355170</td>\n",
       "      <td>0.373517</td>\n",
       "      <td>0.828620</td>\n",
       "      <td>0.284606</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.379232</td>\n",
       "      <td>0.360541</td>\n",
       "      <td>0.715771</td>\n",
       "      <td>0.466215</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.171000</td>\n",
       "      <td>0.144830</td>\n",
       "      <td>0.449638</td>\n",
       "      <td>0.465740</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.175530</td>\n",
       "      <td>0.174649</td>\n",
       "      <td>0.607131</td>\n",
       "      <td>0.284297</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.209120</td>\n",
       "      <td>0.197158</td>\n",
       "      <td>0.449313</td>\n",
       "      <td>0.339143</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 34 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   instant  season_1  season_2  season_3  season_4  mnth_1  mnth_2  mnth_3  \\\n",
       "0        1         1         0         0         0       1       0       0   \n",
       "1        2         1         0         0         0       1       0       0   \n",
       "2        3         1         0         0         0       1       0       0   \n",
       "3        4         1         0         0         0       1       0       0   \n",
       "4        5         1         0         0         0       1       0       0   \n",
       "\n",
       "   mnth_4  mnth_5  ...  weekday_4  weekday_5  weekday_6      temp     atemp  \\\n",
       "0       0       0  ...          0          0          1  0.355170  0.373517   \n",
       "1       0       0  ...          0          0          0  0.379232  0.360541   \n",
       "2       0       0  ...          0          0          0  0.171000  0.144830   \n",
       "3       0       0  ...          0          0          0  0.175530  0.174649   \n",
       "4       0       0  ...          0          0          0  0.209120  0.197158   \n",
       "\n",
       "        hum  windspeed  holiday  workingday  yr  \n",
       "0  0.828620   0.284606        0           0   0  \n",
       "1  0.715771   0.466215        0           0   0  \n",
       "2  0.449638   0.465740        0           1   0  \n",
       "3  0.607131   0.284297        0           1   0  \n",
       "4  0.449313   0.339143        0           1   0  \n",
       "\n",
       "[5 rows x 34 columns]"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#划分样本特征x，和样本输出y总租车人数\n",
    "y=FE_train['cnt']\n",
    "X=FE_train.drop(['cnt'],axis=1)\n",
    "X.head() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  划分训练集和测试集"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "sklearn.model_selection包中的train_test_split的用法，X是样本特征集，y是样本结果，test_size是样本的划分比例，20%做测试集，80%做训练集，random_state是随机数种子，设置为0代表每次产生的训练集和测试集都是比例固定但随机的。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(584, 34) (147, 34)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train,X_test, y_train, y_test =train_test_split(X,y,test_size=0.2,random_state=30)\n",
    "feat_names=X.columns\n",
    "print(X_train.shape, X_test.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###   观察预测值与真值的散点图"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在cnt真值1000到4000的范围，模型预测效果不好"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.  用训练数据训练各种回归模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  最小二乘线性回归模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>columns</th>\n",
       "      <th>coef</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>yr</td>\n",
       "      <td>5223.888353</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>atemp</td>\n",
       "      <td>5049.134804</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>mnth_9</td>\n",
       "      <td>1434.391907</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>mnth_10</td>\n",
       "      <td>1092.417558</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>mnth_12</td>\n",
       "      <td>1024.045016</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>weathersit_1</td>\n",
       "      <td>772.832069</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>mnth_11</td>\n",
       "      <td>742.721387</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>season_4</td>\n",
       "      <td>714.072455</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>mnth_8</td>\n",
       "      <td>609.077619</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>weathersit_2</td>\n",
       "      <td>357.760840</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>weekday_6</td>\n",
       "      <td>342.011295</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>workingday</td>\n",
       "      <td>155.203442</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>season_2</td>\n",
       "      <td>154.610075</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>mnth_6</td>\n",
       "      <td>51.326964</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>weekday_4</td>\n",
       "      <td>23.202271</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>weekday_3</td>\n",
       "      <td>-6.895720</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>instant</td>\n",
       "      <td>-8.807108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>season_3</td>\n",
       "      <td>-27.300932</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>weekday_5</td>\n",
       "      <td>-29.982865</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>weekday_2</td>\n",
       "      <td>-33.935957</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>weekday_0</td>\n",
       "      <td>-126.109073</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>mnth_7</td>\n",
       "      <td>-127.024301</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>mnth_5</td>\n",
       "      <td>-141.706110</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>weekday_1</td>\n",
       "      <td>-168.289951</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>holiday</td>\n",
       "      <td>-371.105664</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>mnth_4</td>\n",
       "      <td>-708.296382</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>mnth_3</td>\n",
       "      <td>-770.906886</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>season_1</td>\n",
       "      <td>-841.381598</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>weathersit_3</td>\n",
       "      <td>-1130.592909</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>windspeed</td>\n",
       "      <td>-1263.568090</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>temp</td>\n",
       "      <td>-1317.431130</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>mnth_2</td>\n",
       "      <td>-1411.416680</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>hum</td>\n",
       "      <td>-1425.865239</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>mnth_1</td>\n",
       "      <td>-1794.630092</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         columns         coef\n",
       "33            yr  5223.888353\n",
       "28         atemp  5049.134804\n",
       "13        mnth_9  1434.391907\n",
       "14       mnth_10  1092.417558\n",
       "16       mnth_12  1024.045016\n",
       "17  weathersit_1   772.832069\n",
       "15       mnth_11   742.721387\n",
       "4       season_4   714.072455\n",
       "12        mnth_8   609.077619\n",
       "18  weathersit_2   357.760840\n",
       "26     weekday_6   342.011295\n",
       "32    workingday   155.203442\n",
       "2       season_2   154.610075\n",
       "10        mnth_6    51.326964\n",
       "24     weekday_4    23.202271\n",
       "23     weekday_3    -6.895720\n",
       "0        instant    -8.807108\n",
       "3       season_3   -27.300932\n",
       "25     weekday_5   -29.982865\n",
       "22     weekday_2   -33.935957\n",
       "20     weekday_0  -126.109073\n",
       "11        mnth_7  -127.024301\n",
       "9         mnth_5  -141.706110\n",
       "21     weekday_1  -168.289951\n",
       "31       holiday  -371.105664\n",
       "8         mnth_4  -708.296382\n",
       "7         mnth_3  -770.906886\n",
       "1       season_1  -841.381598\n",
       "19  weathersit_3 -1130.592909\n",
       "30     windspeed -1263.568090\n",
       "27          temp -1317.431130\n",
       "6         mnth_2 -1411.416680\n",
       "29           hum -1425.865239\n",
       "5         mnth_1 -1794.630092"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "# 1.使用默认配置初始化学习器实例\n",
    "lr = LinearRegression()\n",
    "\n",
    "# 2.用训练数据训练模型参数\n",
    "lr.fit(X_train, y_train)\n",
    "\n",
    "# 3. 用训练好的模型对测试集进行预测\n",
    "y_test_pred_lr = lr.predict(X_test)\n",
    "y_train_pred_lr = lr.predict(X_train)\n",
    "\n",
    "\n",
    "feat_name=X.columns\n",
    "fs = pd.DataFrame({\"columns\":list(feat_name), \"coef\":list((lr.coef_.T))})\n",
    "fs.sort_values(by=['coef'],ascending=False)\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "####  岭回归模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "alpha is: 0.1\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import RidgeCV\n",
    "#1设置超参数（正则参数）范围\n",
    "alphas = [0.01, 0.1, 1, 10, 100]\n",
    "#2.生成实例\n",
    "ridge = RidgeCV(alphas=alphas, store_cv_values=True) \n",
    "\n",
    "#3. 模型训练\n",
    "ridge.fit(X_train, y_train)    \n",
    "\n",
    "#4. 预测\n",
    "y_test_pred_ridge = ridge.predict(X_test)\n",
    "y_train_pred_ridge = ridge.predict(X_train)\n",
    "\n",
    "#可视化最佳参数\n",
    "mse_mean = np.mean(ridge.cv_values_, axis = 0)\n",
    "plt.plot(np.log10(alphas), mse_mean.reshape(len(alphas),1))\n",
    "\n",
    "plt.xlabel('log(alpha)')\n",
    "plt.ylabel('mse')\n",
    "plt.show()\n",
    "\n",
    "print ('alpha is:', ridge.alpha_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "参数进行比较"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>columns</th>\n",
       "      <th>coef_lr</th>\n",
       "      <th>coef_ridge</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>yr</td>\n",
       "      <td>5223.888353</td>\n",
       "      <td>3730.189163</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>atemp</td>\n",
       "      <td>5049.134804</td>\n",
       "      <td>3222.706642</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>mnth_9</td>\n",
       "      <td>1434.391907</td>\n",
       "      <td>1094.620857</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>mnth_10</td>\n",
       "      <td>1092.417558</td>\n",
       "      <td>650.548729</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>mnth_12</td>\n",
       "      <td>1024.045016</td>\n",
       "      <td>345.615181</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>weathersit_1</td>\n",
       "      <td>772.832069</td>\n",
       "      <td>777.243469</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>mnth_11</td>\n",
       "      <td>742.721387</td>\n",
       "      <td>185.232269</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>season_4</td>\n",
       "      <td>714.072455</td>\n",
       "      <td>729.751950</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>mnth_8</td>\n",
       "      <td>609.077619</td>\n",
       "      <td>393.882318</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>weathersit_2</td>\n",
       "      <td>357.760840</td>\n",
       "      <td>358.992960</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>weekday_6</td>\n",
       "      <td>342.011295</td>\n",
       "      <td>341.917237</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>workingday</td>\n",
       "      <td>155.203442</td>\n",
       "      <td>158.858871</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>season_2</td>\n",
       "      <td>154.610075</td>\n",
       "      <td>149.667102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>mnth_6</td>\n",
       "      <td>51.326964</td>\n",
       "      <td>96.085323</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>weekday_4</td>\n",
       "      <td>23.202271</td>\n",
       "      <td>22.241549</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>weekday_3</td>\n",
       "      <td>-6.895720</td>\n",
       "      <td>-10.245330</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>instant</td>\n",
       "      <td>-8.807108</td>\n",
       "      <td>-4.723234</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>season_3</td>\n",
       "      <td>-27.300932</td>\n",
       "      <td>-27.050328</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>weekday_5</td>\n",
       "      <td>-29.982865</td>\n",
       "      <td>-28.961369</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>weekday_2</td>\n",
       "      <td>-33.935957</td>\n",
       "      <td>-34.639766</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>weekday_0</td>\n",
       "      <td>-126.109073</td>\n",
       "      <td>-123.498905</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>mnth_7</td>\n",
       "      <td>-127.024301</td>\n",
       "      <td>-203.443934</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>mnth_5</td>\n",
       "      <td>-141.706110</td>\n",
       "      <td>49.090578</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>weekday_1</td>\n",
       "      <td>-168.289951</td>\n",
       "      <td>-166.813415</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>holiday</td>\n",
       "      <td>-371.105664</td>\n",
       "      <td>-377.277203</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>mnth_4</td>\n",
       "      <td>-708.296382</td>\n",
       "      <td>-373.534753</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>mnth_3</td>\n",
       "      <td>-770.906886</td>\n",
       "      <td>-315.443680</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>season_1</td>\n",
       "      <td>-841.381598</td>\n",
       "      <td>-852.368724</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>weathersit_3</td>\n",
       "      <td>-1130.592909</td>\n",
       "      <td>-1136.236428</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>windspeed</td>\n",
       "      <td>-1263.568090</td>\n",
       "      <td>-1323.021096</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>temp</td>\n",
       "      <td>-1317.431130</td>\n",
       "      <td>428.780610</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>mnth_2</td>\n",
       "      <td>-1411.416680</td>\n",
       "      <td>-828.198432</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>hum</td>\n",
       "      <td>-1425.865239</td>\n",
       "      <td>-1395.857507</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>mnth_1</td>\n",
       "      <td>-1794.630092</td>\n",
       "      <td>-1094.454455</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         columns      coef_lr   coef_ridge\n",
       "33            yr  5223.888353  3730.189163\n",
       "28         atemp  5049.134804  3222.706642\n",
       "13        mnth_9  1434.391907  1094.620857\n",
       "14       mnth_10  1092.417558   650.548729\n",
       "16       mnth_12  1024.045016   345.615181\n",
       "17  weathersit_1   772.832069   777.243469\n",
       "15       mnth_11   742.721387   185.232269\n",
       "4       season_4   714.072455   729.751950\n",
       "12        mnth_8   609.077619   393.882318\n",
       "18  weathersit_2   357.760840   358.992960\n",
       "26     weekday_6   342.011295   341.917237\n",
       "32    workingday   155.203442   158.858871\n",
       "2       season_2   154.610075   149.667102\n",
       "10        mnth_6    51.326964    96.085323\n",
       "24     weekday_4    23.202271    22.241549\n",
       "23     weekday_3    -6.895720   -10.245330\n",
       "0        instant    -8.807108    -4.723234\n",
       "3       season_3   -27.300932   -27.050328\n",
       "25     weekday_5   -29.982865   -28.961369\n",
       "22     weekday_2   -33.935957   -34.639766\n",
       "20     weekday_0  -126.109073  -123.498905\n",
       "11        mnth_7  -127.024301  -203.443934\n",
       "9         mnth_5  -141.706110    49.090578\n",
       "21     weekday_1  -168.289951  -166.813415\n",
       "31       holiday  -371.105664  -377.277203\n",
       "8         mnth_4  -708.296382  -373.534753\n",
       "7         mnth_3  -770.906886  -315.443680\n",
       "1       season_1  -841.381598  -852.368724\n",
       "19  weathersit_3 -1130.592909 -1136.236428\n",
       "30     windspeed -1263.568090 -1323.021096\n",
       "27          temp -1317.431130   428.780610\n",
       "6         mnth_2 -1411.416680  -828.198432\n",
       "29           hum -1425.865239 -1395.857507\n",
       "5         mnth_1 -1794.630092 -1094.454455"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fs = pd.DataFrame({\"columns\":list(feat_names), \"coef_lr\":list((lr.coef_.T)), \"coef_ridge\":list((ridge.coef_.T))})\n",
    "fs.sort_values(by=['coef_lr'],ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "####  Lasso模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "alpha is: 1.0\n"
     ]
    }
   ],
   "source": [
    "#### Lasso／L1正则\n",
    "# class sklearn.linear_model.LassoCV(eps=0.001, n_alphas=100, alphas=None, fit_intercept=True, \n",
    "#                                    normalize=False, precompute=’auto’, max_iter=1000, \n",
    "#                                    tol=0.0001, copy_X=True, cv=None, verbose=False, n_jobs=1,\n",
    "#                                    positive=False, random_state=None, selection=’cyclic’)\n",
    "from sklearn.linear_model import LassoCV\n",
    "#设置超参数范围\n",
    "alphas = [0.01, 0.1, 1, 10, 100]\n",
    "\n",
    "#2 生成LassoCV实例\n",
    "lasso =  LassoCV(alphas=alphas)\n",
    "\n",
    "#3. 训练（内含CV）\n",
    "lasso.fit(X_train, y_train)  \n",
    "\n",
    "#4. 测试\n",
    "y_test_pred_lasso = lasso.predict(X_test)\n",
    "y_train_pred_lasso = lasso.predict(X_train)\n",
    "# 可视化最佳参数\n",
    "mses = np.mean(lasso.mse_path_, axis = 1)\n",
    "plt.plot(np.log10(lasso.alphas_), mses)\n",
    "plt.xlabel('log(alpha)')\n",
    "plt.ylabel('mse')\n",
    "plt.show()    \n",
    "            \n",
    "print ('alpha is:', lasso.alpha_)\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>columns</th>\n",
       "      <th>coef_lr</th>\n",
       "      <th>coef_ridge</th>\n",
       "      <th>coef_lasso</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>yr</td>\n",
       "      <td>5223.888353</td>\n",
       "      <td>3730.189163</td>\n",
       "      <td>2648.645283</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>atemp</td>\n",
       "      <td>5049.134804</td>\n",
       "      <td>3222.706642</td>\n",
       "      <td>3711.185477</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>mnth_9</td>\n",
       "      <td>1434.391907</td>\n",
       "      <td>1094.620857</td>\n",
       "      <td>822.087181</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>mnth_10</td>\n",
       "      <td>1092.417558</td>\n",
       "      <td>650.548729</td>\n",
       "      <td>335.003219</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>mnth_12</td>\n",
       "      <td>1024.045016</td>\n",
       "      <td>345.615181</td>\n",
       "      <td>-116.685321</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>weathersit_1</td>\n",
       "      <td>772.832069</td>\n",
       "      <td>777.243469</td>\n",
       "      <td>418.121683</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>mnth_11</td>\n",
       "      <td>742.721387</td>\n",
       "      <td>185.232269</td>\n",
       "      <td>-187.684469</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>season_4</td>\n",
       "      <td>714.072455</td>\n",
       "      <td>729.751950</td>\n",
       "      <td>556.873946</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>mnth_8</td>\n",
       "      <td>609.077619</td>\n",
       "      <td>393.882318</td>\n",
       "      <td>194.988663</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>weathersit_2</td>\n",
       "      <td>357.760840</td>\n",
       "      <td>358.992960</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>weekday_6</td>\n",
       "      <td>342.011295</td>\n",
       "      <td>341.917237</td>\n",
       "      <td>203.235617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>workingday</td>\n",
       "      <td>155.203442</td>\n",
       "      <td>158.858871</td>\n",
       "      <td>0.125943</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>season_2</td>\n",
       "      <td>154.610075</td>\n",
       "      <td>149.667102</td>\n",
       "      <td>8.088095</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>mnth_6</td>\n",
       "      <td>51.326964</td>\n",
       "      <td>96.085323</td>\n",
       "      <td>99.153461</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>weekday_4</td>\n",
       "      <td>23.202271</td>\n",
       "      <td>22.241549</td>\n",
       "      <td>42.166867</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>weekday_3</td>\n",
       "      <td>-6.895720</td>\n",
       "      <td>-10.245330</td>\n",
       "      <td>9.748993</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>instant</td>\n",
       "      <td>-8.807108</td>\n",
       "      <td>-4.723234</td>\n",
       "      <td>-1.766613</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>season_3</td>\n",
       "      <td>-27.300932</td>\n",
       "      <td>-27.050328</td>\n",
       "      <td>-130.739679</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>weekday_5</td>\n",
       "      <td>-29.982865</td>\n",
       "      <td>-28.961369</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>weekday_2</td>\n",
       "      <td>-33.935957</td>\n",
       "      <td>-34.639766</td>\n",
       "      <td>-1.776321</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>weekday_0</td>\n",
       "      <td>-126.109073</td>\n",
       "      <td>-123.498905</td>\n",
       "      <td>-245.625885</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>mnth_7</td>\n",
       "      <td>-127.024301</td>\n",
       "      <td>-203.443934</td>\n",
       "      <td>-291.894473</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>mnth_5</td>\n",
       "      <td>-141.706110</td>\n",
       "      <td>49.090578</td>\n",
       "      <td>152.526963</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>weekday_1</td>\n",
       "      <td>-168.289951</td>\n",
       "      <td>-166.813415</td>\n",
       "      <td>-138.436767</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>holiday</td>\n",
       "      <td>-371.105664</td>\n",
       "      <td>-377.277203</td>\n",
       "      <td>-506.353534</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>mnth_4</td>\n",
       "      <td>-708.296382</td>\n",
       "      <td>-373.534753</td>\n",
       "      <td>-154.897195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>mnth_3</td>\n",
       "      <td>-770.906886</td>\n",
       "      <td>-315.443680</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>season_1</td>\n",
       "      <td>-841.381598</td>\n",
       "      <td>-852.368724</td>\n",
       "      <td>-1026.453532</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>weathersit_3</td>\n",
       "      <td>-1130.592909</td>\n",
       "      <td>-1136.236428</td>\n",
       "      <td>-1476.472626</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>windspeed</td>\n",
       "      <td>-1263.568090</td>\n",
       "      <td>-1323.021096</td>\n",
       "      <td>-1279.290214</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>temp</td>\n",
       "      <td>-1317.431130</td>\n",
       "      <td>428.780610</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>mnth_2</td>\n",
       "      <td>-1411.416680</td>\n",
       "      <td>-828.198432</td>\n",
       "      <td>-386.128126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>hum</td>\n",
       "      <td>-1425.865239</td>\n",
       "      <td>-1395.857507</td>\n",
       "      <td>-1363.057108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>mnth_1</td>\n",
       "      <td>-1794.630092</td>\n",
       "      <td>-1094.454455</td>\n",
       "      <td>-563.187838</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         columns      coef_lr   coef_ridge   coef_lasso\n",
       "33            yr  5223.888353  3730.189163  2648.645283\n",
       "28         atemp  5049.134804  3222.706642  3711.185477\n",
       "13        mnth_9  1434.391907  1094.620857   822.087181\n",
       "14       mnth_10  1092.417558   650.548729   335.003219\n",
       "16       mnth_12  1024.045016   345.615181  -116.685321\n",
       "17  weathersit_1   772.832069   777.243469   418.121683\n",
       "15       mnth_11   742.721387   185.232269  -187.684469\n",
       "4       season_4   714.072455   729.751950   556.873946\n",
       "12        mnth_8   609.077619   393.882318   194.988663\n",
       "18  weathersit_2   357.760840   358.992960     0.000000\n",
       "26     weekday_6   342.011295   341.917237   203.235617\n",
       "32    workingday   155.203442   158.858871     0.125943\n",
       "2       season_2   154.610075   149.667102     8.088095\n",
       "10        mnth_6    51.326964    96.085323    99.153461\n",
       "24     weekday_4    23.202271    22.241549    42.166867\n",
       "23     weekday_3    -6.895720   -10.245330     9.748993\n",
       "0        instant    -8.807108    -4.723234    -1.766613\n",
       "3       season_3   -27.300932   -27.050328  -130.739679\n",
       "25     weekday_5   -29.982865   -28.961369     0.000000\n",
       "22     weekday_2   -33.935957   -34.639766    -1.776321\n",
       "20     weekday_0  -126.109073  -123.498905  -245.625885\n",
       "11        mnth_7  -127.024301  -203.443934  -291.894473\n",
       "9         mnth_5  -141.706110    49.090578   152.526963\n",
       "21     weekday_1  -168.289951  -166.813415  -138.436767\n",
       "31       holiday  -371.105664  -377.277203  -506.353534\n",
       "8         mnth_4  -708.296382  -373.534753  -154.897195\n",
       "7         mnth_3  -770.906886  -315.443680     0.000000\n",
       "1       season_1  -841.381598  -852.368724 -1026.453532\n",
       "19  weathersit_3 -1130.592909 -1136.236428 -1476.472626\n",
       "30     windspeed -1263.568090 -1323.021096 -1279.290214\n",
       "27          temp -1317.431130   428.780610     0.000000\n",
       "6         mnth_2 -1411.416680  -828.198432  -386.128126\n",
       "29           hum -1425.865239 -1395.857507 -1363.057108\n",
       "5         mnth_1 -1794.630092 -1094.454455  -563.187838"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 看看各特征的权重系数，系数的绝对值大小可视为该特征的重要性\n",
    "fs = pd.DataFrame({\"columns\":list(feat_names), \"coef_lr\":list((lr.coef_.T)), \"coef_ridge\":list((ridge.coef_.T)), \"coef_lasso\":list((lasso.coef_.T))})\n",
    "fs.sort_values(by=['coef_lr'],ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>columns</th>\n",
       "      <th>coef_lr</th>\n",
       "      <th>coef_ridge</th>\n",
       "      <th>coef_lasso</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>yr</td>\n",
       "      <td>5223.888353</td>\n",
       "      <td>3730.189163</td>\n",
       "      <td>2648.645283</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>atemp</td>\n",
       "      <td>5049.134804</td>\n",
       "      <td>3222.706642</td>\n",
       "      <td>3711.185477</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>mnth_9</td>\n",
       "      <td>1434.391907</td>\n",
       "      <td>1094.620857</td>\n",
       "      <td>822.087181</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>mnth_10</td>\n",
       "      <td>1092.417558</td>\n",
       "      <td>650.548729</td>\n",
       "      <td>335.003219</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>mnth_12</td>\n",
       "      <td>1024.045016</td>\n",
       "      <td>345.615181</td>\n",
       "      <td>-116.685321</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>weathersit_1</td>\n",
       "      <td>772.832069</td>\n",
       "      <td>777.243469</td>\n",
       "      <td>418.121683</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>mnth_11</td>\n",
       "      <td>742.721387</td>\n",
       "      <td>185.232269</td>\n",
       "      <td>-187.684469</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>season_4</td>\n",
       "      <td>714.072455</td>\n",
       "      <td>729.751950</td>\n",
       "      <td>556.873946</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>mnth_8</td>\n",
       "      <td>609.077619</td>\n",
       "      <td>393.882318</td>\n",
       "      <td>194.988663</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>weathersit_2</td>\n",
       "      <td>357.760840</td>\n",
       "      <td>358.992960</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>weekday_6</td>\n",
       "      <td>342.011295</td>\n",
       "      <td>341.917237</td>\n",
       "      <td>203.235617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>workingday</td>\n",
       "      <td>155.203442</td>\n",
       "      <td>158.858871</td>\n",
       "      <td>0.125943</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>season_2</td>\n",
       "      <td>154.610075</td>\n",
       "      <td>149.667102</td>\n",
       "      <td>8.088095</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>mnth_6</td>\n",
       "      <td>51.326964</td>\n",
       "      <td>96.085323</td>\n",
       "      <td>99.153461</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>weekday_4</td>\n",
       "      <td>23.202271</td>\n",
       "      <td>22.241549</td>\n",
       "      <td>42.166867</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>weekday_3</td>\n",
       "      <td>-6.895720</td>\n",
       "      <td>-10.245330</td>\n",
       "      <td>9.748993</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>instant</td>\n",
       "      <td>-8.807108</td>\n",
       "      <td>-4.723234</td>\n",
       "      <td>-1.766613</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>season_3</td>\n",
       "      <td>-27.300932</td>\n",
       "      <td>-27.050328</td>\n",
       "      <td>-130.739679</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>weekday_5</td>\n",
       "      <td>-29.982865</td>\n",
       "      <td>-28.961369</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>weekday_2</td>\n",
       "      <td>-33.935957</td>\n",
       "      <td>-34.639766</td>\n",
       "      <td>-1.776321</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>weekday_0</td>\n",
       "      <td>-126.109073</td>\n",
       "      <td>-123.498905</td>\n",
       "      <td>-245.625885</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>mnth_7</td>\n",
       "      <td>-127.024301</td>\n",
       "      <td>-203.443934</td>\n",
       "      <td>-291.894473</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>mnth_5</td>\n",
       "      <td>-141.706110</td>\n",
       "      <td>49.090578</td>\n",
       "      <td>152.526963</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>weekday_1</td>\n",
       "      <td>-168.289951</td>\n",
       "      <td>-166.813415</td>\n",
       "      <td>-138.436767</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>holiday</td>\n",
       "      <td>-371.105664</td>\n",
       "      <td>-377.277203</td>\n",
       "      <td>-506.353534</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>mnth_4</td>\n",
       "      <td>-708.296382</td>\n",
       "      <td>-373.534753</td>\n",
       "      <td>-154.897195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>mnth_3</td>\n",
       "      <td>-770.906886</td>\n",
       "      <td>-315.443680</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>season_1</td>\n",
       "      <td>-841.381598</td>\n",
       "      <td>-852.368724</td>\n",
       "      <td>-1026.453532</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>weathersit_3</td>\n",
       "      <td>-1130.592909</td>\n",
       "      <td>-1136.236428</td>\n",
       "      <td>-1476.472626</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>windspeed</td>\n",
       "      <td>-1263.568090</td>\n",
       "      <td>-1323.021096</td>\n",
       "      <td>-1279.290214</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>temp</td>\n",
       "      <td>-1317.431130</td>\n",
       "      <td>428.780610</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>mnth_2</td>\n",
       "      <td>-1411.416680</td>\n",
       "      <td>-828.198432</td>\n",
       "      <td>-386.128126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>hum</td>\n",
       "      <td>-1425.865239</td>\n",
       "      <td>-1395.857507</td>\n",
       "      <td>-1363.057108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>mnth_1</td>\n",
       "      <td>-1794.630092</td>\n",
       "      <td>-1094.454455</td>\n",
       "      <td>-563.187838</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         columns      coef_lr   coef_ridge   coef_lasso\n",
       "33            yr  5223.888353  3730.189163  2648.645283\n",
       "28         atemp  5049.134804  3222.706642  3711.185477\n",
       "13        mnth_9  1434.391907  1094.620857   822.087181\n",
       "14       mnth_10  1092.417558   650.548729   335.003219\n",
       "16       mnth_12  1024.045016   345.615181  -116.685321\n",
       "17  weathersit_1   772.832069   777.243469   418.121683\n",
       "15       mnth_11   742.721387   185.232269  -187.684469\n",
       "4       season_4   714.072455   729.751950   556.873946\n",
       "12        mnth_8   609.077619   393.882318   194.988663\n",
       "18  weathersit_2   357.760840   358.992960     0.000000\n",
       "26     weekday_6   342.011295   341.917237   203.235617\n",
       "32    workingday   155.203442   158.858871     0.125943\n",
       "2       season_2   154.610075   149.667102     8.088095\n",
       "10        mnth_6    51.326964    96.085323    99.153461\n",
       "24     weekday_4    23.202271    22.241549    42.166867\n",
       "23     weekday_3    -6.895720   -10.245330     9.748993\n",
       "0        instant    -8.807108    -4.723234    -1.766613\n",
       "3       season_3   -27.300932   -27.050328  -130.739679\n",
       "25     weekday_5   -29.982865   -28.961369     0.000000\n",
       "22     weekday_2   -33.935957   -34.639766    -1.776321\n",
       "20     weekday_0  -126.109073  -123.498905  -245.625885\n",
       "11        mnth_7  -127.024301  -203.443934  -291.894473\n",
       "9         mnth_5  -141.706110    49.090578   152.526963\n",
       "21     weekday_1  -168.289951  -166.813415  -138.436767\n",
       "31       holiday  -371.105664  -377.277203  -506.353534\n",
       "8         mnth_4  -708.296382  -373.534753  -154.897195\n",
       "7         mnth_3  -770.906886  -315.443680     0.000000\n",
       "1       season_1  -841.381598  -852.368724 -1026.453532\n",
       "19  weathersit_3 -1130.592909 -1136.236428 -1476.472626\n",
       "30     windspeed -1263.568090 -1323.021096 -1279.290214\n",
       "27          temp -1317.431130   428.780610     0.000000\n",
       "6         mnth_2 -1411.416680  -828.198432  -386.128126\n",
       "29           hum -1425.865239 -1395.857507 -1363.057108\n",
       "5         mnth_1 -1794.630092 -1094.454455  -563.187838"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 看看各特征的权重系数，系数的绝对值大小可视为该特征的重要性\n",
    "fs = pd.DataFrame({\"columns\":list(feat_names), \"coef_lr\":list((lr.coef_.T)), \"coef_ridge\":list((ridge.coef_.T)), \"coef_lasso\":list((lasso.coef_.T))})\n",
    "fs.sort_values(by=['coef_lr'],ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从比较结果可明显看出L2正则(Ridge)使得线性回归系数收缩；而L1正则(Lasso)也会收缩回归系数，当正则参数取合适值时，L1正则使得有些回归系数为0得到稀疏模型。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. 模型评价"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import mean_squared_error\n",
    "from sklearn.metrics import r2_score\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  最小二乘法线性回归的模型评价"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### RMSE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "test_err: 799.4428184373645\n",
      "train_err: 754.3457349210205\n"
     ]
    }
   ],
   "source": [
    "#最小二乘法\n",
    "# RMSE(RMSE=MSE**0.5)\n",
    "train_err = mean_squared_error(y_train, y_train_pred_lr)**0.5\n",
    "test_err = mean_squared_error(y_test, y_test_pred_lr)**0.5\n",
    "\n",
    "print(\"test_err:\",test_err)\n",
    "print(\"train_err:\",train_err)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### r2_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "test_err: 0.8204102481984582\n",
      "train_err: 0.8498931059139886\n"
     ]
    }
   ],
   "source": [
    "train_err = r2_score(y_train, y_train_pred_lr)\n",
    "test_err = r2_score(y_test, y_test_pred_lr)\n",
    "\n",
    "print(\"test_err:\",test_err)\n",
    "print(\"train_err:\",train_err)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###   对岭回归模型评价"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The RMSE of RidgeCV on test is 768.0061658048431\n",
      "The RMSE of RidgeCV on train is 755.8435948170385\n"
     ]
    }
   ],
   "source": [
    "# 评估，使用RMSE评价模型在测试集和训练集上的性能\n",
    "print('The RMSE of RidgeCV on test is', mean_squared_error(y_test, y_test_pred_ridge)**0.5)\n",
    "print('The RMSE of RidgeCV on train is', mean_squared_error(y_train, y_train_pred_ridge)**0.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The r2_score of RidgeCV on test is 0.8342566347027978\n",
      "The r2_score of RidgeCV on train is 0.8492963972399037\n"
     ]
    }
   ],
   "source": [
    "# 评估，使用r2_score评价模型在测试集和训练集上的性能\n",
    "print('The r2_score of RidgeCV on test is', r2_score(y_test, y_test_pred_ridge))\n",
    "print('The r2_score of RidgeCV on train is', r2_score(y_train, y_train_pred_ridge))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 对Lasso模型评价"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The RMSE of LassoCV on test is 771.9409017934009\n",
      "The RMSE of LassoCV on train is 757.6606231371941\n"
     ]
    }
   ],
   "source": [
    "print('The RMSE of LassoCV on test is', mean_squared_error(y_test, y_test_pred_lasso)**0.5)\n",
    "print('The RMSE of LassoCV on train is', mean_squared_error(y_train, y_train_pred_lasso)**0.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The r2_score of LassoCV on test is 0.8325539739324594\n",
      "The r2_score of LassoCV on train is 0.8485709512365196\n"
     ]
    }
   ],
   "source": [
    "# 评估，使用r2_score评价模型在测试集和训练集上的性能\n",
    "print('The r2_score of LassoCV on test is', r2_score(y_test, y_test_pred_lasso))\n",
    "print('The r2_score of LassoCV on train is', r2_score(y_train, y_train_pred_lasso))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<module 'matplotlib.pyplot' from 'd:\\\\silen\\\\python37\\\\lib\\\\site-packages\\\\matplotlib\\\\pyplot.py'>"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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b3/721RUVDBlyhSuuuoqLr74Yu68805++9vfRr3++uuvZ8GCBRx++OGUl5eTlZXFf//7Xx577DHeeOMNcnJy2LlzJwA//vGPufXWWznqqKO4/PLL+f3vfx8JtLt27eLFF18E4Ac/+AG/+tWvmDZtGp988gnf/OY3eeedd5r4Vo3pnlIuKMyf3vTU2YXzC9m0u/HU2UMLhlJyRklS8jR58mSGDRsGOFNbz5gxIzLD6MyZM3n55ZeZPn06F154IZdccgknnXQSRxxxBPX19WRlZXH22WdHTXHt169fPw488EBef/11RowYwYYNGyJzKt1yyy0sWbIEgE8//ZT3338/YVB46aWXOP300wkGgwwcOJCvf/3rkW0vvPAC1157LZWVlezcuZPhw4c3Wd7ly5dTXFxMv379AJg1axYvvfQS3/72t8nIyIiU45BDDuGZZ55p9PrDDz+cCy64gFmzZjFz5kwGDx7Ms88+y5lnnhmZwrt3797s3r2bXbt2cdRRRwHwk5/8hO9+97uR/Zx22mmR588++2zU+Y49e/ZQVlZGfn5+k2UxprtJue6j5lx1zFXkpOdErctJz+GqY1o/dfaoUaOaHEUcO8V0PAcddBArV65kzJgxXHrppVx55ZWkpaWxbNkyTj31VB577DGmT59OKBSKdK14R++nnXYaDz30EP/4xz+YMWMGIkJJSQnPPvssS5cu5e2332bChAlxp+n2i502G6C6upqf//znPPLII6xZs4bZs2c3u59EZQRn2m7vfRJNCz5v3jz++te/UlVVxZQpU3j33XdR1bj5a4r/cw+HwyxdupRVq1axatUqtmzZYgHBmDi6XVCYNWYWC7+1kKEFQxGEoQVDWfithcwa0/pZU7/+9a9TU1PDnXfeGVm3fPnySNeF35FHHsljjz1GZWUlFRUVLFmyhCOOOILS0lJycnL44Q9/yIUXXsibb75JeXk5u3fv5oQTTmD+/PmsWrWKYDAYqdi8u63NnDmTxx57jAceeCBydLx792569epFTk4O7777Lq+//nqTZTjyyCNZvHgxoVCIrVu38sILLwBEAkDfvn0pLy+PuiIpPz8/0t/vd+ihh/Liiy/yxRdfEAqFeOCBByJH8y3xwQcfMGbMGC655BKKiop49913Oe6447j77rupdO+DsXPnTgoKCujVq1fkJkT3339/wvc57rjjuO22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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.model_selection import ShuffleSplit\n",
    "from sklearn.model_selection import learning_curve\n",
    "\n",
    "def plot_learning_curve(estimator, title, X, y, ylim=None, cv=None,\n",
    "                        n_jobs=1, train_sizes=np.linspace(.1, 1.0, 5)):\n",
    "    \n",
    "    plt.figure()\n",
    "    plt.title(title)\n",
    "    if ylim is not None:\n",
    "        plt.ylim(*ylim)\n",
    "    plt.xlabel(\"Training examples\")\n",
    "    plt.ylabel(\"Score\")\n",
    "    train_sizes, train_scores, test_scores = learning_curve(\n",
    "        estimator, X, y, cv=cv, n_jobs=n_jobs, train_sizes=train_sizes)\n",
    "    train_scores_mean = np.mean(train_scores, axis=1)\n",
    "    train_scores_std = np.std(train_scores, axis=1)\n",
    "    test_scores_mean = np.mean(test_scores, axis=1)\n",
    "    test_scores_std = np.std(test_scores, axis=1)\n",
    "    plt.grid()\n",
    "\n",
    "    plt.fill_between(train_sizes, train_scores_mean - train_scores_std,\n",
    "                     train_scores_mean + train_scores_std, alpha=0.1,\n",
    "                     color=\"r\")\n",
    "    plt.fill_between(train_sizes, test_scores_mean - test_scores_std,\n",
    "                     test_scores_mean + test_scores_std, alpha=0.1, color=\"g\")\n",
    "    plt.plot(train_sizes, train_scores_mean, 'o-', color=\"r\",\n",
    "             label=\"Training score\")\n",
    "    plt.plot(train_sizes, test_scores_mean, 'o-', color=\"g\",\n",
    "             label=\"Cross-validation score\")\n",
    "\n",
    "    plt.legend(loc=\"best\")\n",
    "    return plt\n",
    "\n",
    "title = \"Learning Curves (LinearRegression)\"\n",
    "cv = ShuffleSplit(X_train.shape[0],test_size=0.2, random_state=0)\n",
    "estimator = LinearRegression()\n",
    "plot_learning_curve(estimator, title, X, y, (0.0, 1.01), cv=cv, n_jobs=4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "总结： 模型没有处于过拟合状态，从r2_score可看出在测试集和训练集上的分数相差很小，而过拟合状态两者的分数应该相差较大。正则并未带来性能上的提升\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
